Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权

news2024/11/25 13:54:54

前言

Supabase 使用的是 postgresql 的 Row Level Security (RLS),可以限制不同用户对同一张表的不同数据行的访问权限。这种安全机制可以确保只有授权用户才能访问其所需要的数据行,保护敏感数据免受未授权的访问和操作。

Auth Providers

打开 Supabase Providers 页面,这里我们可以看到 Supabase 提供了 20 多种验证方式:

在这里插入图片描述

我们可以根据自己项目的实际情况选择适合的第三方登录,这里我们以 Github 为例。

配置 Github OAuth Apps

  1. 打开 OAuth Apps 页面,点击 New Oauth App
    在这里插入图片描述

  2. 填入项目的信息,这里的 Homepage URL 我们可以先填本地开发的地址,等部署上线再改成线上地址,Authorization callback URL 填入 Supabase 提供的 Callback URL (for OAuth),然后点击 Register Application
    在这里插入图片描述

  3. 打开刚创建的 Oauth App,这里可以根据需要设置 Oauth App 信息,点击 Generate a new client secret 复制密钥
    在这里插入图片描述

  4. 打开 Supabase Providers 页面,找到 Github,将 Client IDClient Secret 分别填入,点击 Save
    在这里插入图片描述

Nuxt3 登录鉴权

Nuxt3 中集成了 @nuxtjs/supabase,我们只需要准备两个文件即可:login.vueconfirm.vue

  1. 新建 /pages/login/index.vue 文件:
  <script setup lang="ts">
 const colorMode = useColorMode()
 const user = useSupabaseUser()
 const { auth } = useSupabaseClient()

 const redirectTo = `${useRuntimeConfig().public.baseUrl}/confirm`

 watchEffect(() => {
   if (user.value) {
     navigateTo('/')
   }
 })
 </script>

 <template>
   <div class="min-h-full flex flex-col justify-center py-12 sm:px-6 lg:px-8">
     <h2 class="my-6 text-center text-3xl font-extrabold u-text-white">登录您的账户</h2>
     <el-card class="sm:mx-auto sm:w-full sm:max-w-md">
       <el-divider>请选择</el-divider>
       <el-button
         type="primary"
         size="large"
         :dark="colorMode.value === 'dark'"
         class="w-full"
         @click="auth.signInWithOAuth({ provider: 'github', options: { redirectTo } })"
       >
         <Icon name="i-simple-icons-github" class="h-5 w-5 mr-2" />
         Github
       </el-button>
     </el-card>
   </div>
 </template>
  1. 新建 /pages/confirm/index.vue 文件:
  <script setup lang="ts">
 const user = useSupabaseUser()

 watch(
   user,
   () => {
     if (user.value) {
       return navigateTo('/')
     }
   },
   { immediate: true }
 )
 </script>

 <template>
   <div>
     <p class="u-text-black">正在登录...</p>
   </div>
 </template>

最终效果

在这里插入图片描述

总结

通过本篇文章你可以学到如何在 Supabase 中使用 Github 授权登录,通过身份认证后我们就可以在 Supabase 中进行数据库相应操作。

下篇文章我们将学习如何在 Nuxt3 中创建 RESTful 风格 API,并结合 Supabase 数据库完成网站分类的 CURD 操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1830549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图知识蒸馏综述:算法分类与应用分析

源自&#xff1a;软件学报 作者&#xff1a;陈哲涵 黎学臻 注&#xff1a;若出现无法显示完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 摘 要 图数据, 如引文网络, 社交网络和交通网络, 广泛地存在现实生活中. 图神经网络凭借强大的表现力受到广泛…

5月70城房价:一线城市新建房价格唯上海反弹 二手房全线降幅扩大 M1下行的根源:地方政府压降债务

5月份&#xff0c;一线城市新建商品住宅销售价格同比下降3.2%&#xff0c;降幅比上月扩大0.7个百分点。其中&#xff0c;北京、广州和深圳分别下降1.8%、8.3%和7.4%&#xff0c;上海上涨4.5%。 2024年5月份&#xff0c;70个大中城市中&#xff0c;各线城市商品住宅销售价格环比…

Linux 下VS Code 弹出 快速修复,导致 BackSpace 无法删除

最近在Linux下使用VSCode&#xff0c;发现有错误的代码选中了无法删除 这个时候&#xff0c;你按BackSpace 是无法删除的&#xff0c;很恼火&#xff01; 把这个禁用了之后&#xff0c;就不会弹出这个框&#xff0c;这样可以顺利选中删除&#xff01; 感觉这个是不是vs code 插…

聚观早报 | GPT-4通过图灵测试;哪吒新车将交付

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月17日消息 GPT-4通过图灵测试 哪吒新车将交付 SpaceX星舰将进行第五次试飞 马斯克称新款Roadster可以飞 华为…

跨平台兼容性优化:确保短剧APP小程序在不同系统上的稳定运行(二)

在上一篇帖子中&#xff0c;我们初步探讨了跨平台兼容性优化的重要性以及不同操作系统和设备对小程序的影响。本篇帖子将进一步深入分析如何优化代码和界面布局&#xff0c;以确保短剧APP小程序在不同平台上都能稳定运行。 一、代码优化策略 减少依赖和冗余&#xff1a;确保代…

Office办公软件如何下载安装?Office 2021最佳的办公软件安装包资源分享!

Office软件这种文档格式的普及&#xff0c;得益于其高度的兼容性和通用性&#xff0c;使得用户能够轻松地在不同的电脑和平台上打开和编辑文件。 Office软件文档格式的通用性&#xff0c;意味着无论是Windows、macOS还是Linux等操作系统&#xff0c;用户都能无障碍地打开和浏览…

triton矩阵乘以及缓存优化

这里triton.cdiv(M, META[BLOCK_SIZE_M]) * triton.cdiv(N, META[BLOCK_SIZE_N])&#xff0c;所以grid的形状是一维的。 观察函数内部 pid tl.program_id(axis0)&#xff0c;因为grid是一维的&#xff0c;所以这里就是总块数&#xff0c;我们假设实际A*BC&#xff0c; A&…

2024文件找回:怎么恢复删除的数据?6种实用的数据恢复汇总锦集!

怎么恢复删除的数据&#xff1f;在当今数字化的时代&#xff0c;我们的电脑中存储了大量的重要数据&#xff0c;一旦数据丢失&#xff0c;可能会对我们的工作和生活造成极大的困扰。因此&#xff0c;掌握一些有效的电脑数据恢复方法是非常必要的。下面&#xff0c;我将介绍六种…

【仿真建模-anylogic】Port原理解析

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-14 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 类图 2. 原理解析 2.1 核心函数&#xff1a; Port作为各类型端口的基类&#xff0c;其核心方法如下 &#xff1a; 函数功能Port(A…

Github 2024-06-17 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-17统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量JavaScript项目3Python项目3C++项目3Rust项目1C#项目1Tcl项目1Java项目1TypeScript项目1Godot引擎 – 多平台2D和3D游戏引擎 创建周期:3817 天…

Suno新技能亮相:完美复刻歌手音色,我甚至不敢公开!

之前写过一篇文章 颠覆音乐创作! Suno史诗级更新&#xff0c;随便哼哼就能出一首好听的歌曲&#xff1f; Suno支持上传一段音频或者自己的哼唱进行续创歌曲&#xff0c;这个功能大家有玩出花样嘛&#xff1f; 可能很多人&#xff0c;还不知道这个到底有啥用! 大家先看看这首《满…

天翼云认证高级解决方案架构师,回忆题库,刚刚出炉,建议收藏

天翼云毕竟是国家队的 面向的都是大市场 虽然起步晚 但是人家底子厚&#xff0c;厚积薄发&#xff0c;且是央资背景&#xff0c;做的都是大项目 这种势下&#xff0c;学习且考出几个天翼云认证&#xff0c;那得安排上&#xff0c;以便以后跳槽&#xff0c;涨薪&#xff0c;…

《天软股票特色因子定期报告》

最新《天软股票特色因子定期报告》&#xff08;2024-06&#xff09;&#xff0c;抢先发布 内容概要如下&#xff1a; 天软特色因子A08006&#xff08;近一月日度买卖压力2&#xff09;从行业角度分析&#xff0c;在电子设备、石油石化行业表现稳定&#xff0c;无论在有效性、区…

【ARM】MDK Debug模式下Disassembly窗口介绍

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 主要了解Disassembly窗口中包含的内容&#xff0c;和如何利用Disassembly中的内容了解程序的存储和调用情况。 2、 问题场景 对于Disassembly窗口中具体包含的内容不了解&#xff0c;无法合理地应用Disassembly窗口…

[数据集][目标检测]减速区域检测数据集VOC+YOLO格式1654张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1654 标注数量(xml文件个数)&#xff1a;1654 标注数量(txt文件个数)&#xff1a;1654 标注…

如何利用H5封装App:小猪APP分发为你解决难题

在这个移动互联网时代&#xff0c;开发一款App并不是件轻而易举的事情。你可能会遇到各种各样的挑战&#xff0c;尤其是当你想要快速上线并高效推广时。如何利用H5来封装App&#xff0c;解决这些难题呢&#xff1f;今天我们就来聊聊这个话题&#xff0c;并看看“小猪APP分发”是…

#0延时赋值

代码; module dff1;reg a, b;initial begina 0;b 1;a < b;b < a;$monitor ("%0dns: \$monitor: a%b b%b", $stime, a, b);$display ("%0dns: \$display: a%b b%b", $stime, a, b);$strobe ("%0dns: \$strobe : a%b b%b\n", $st…

Origin中增加一列并更新绘图

一、在book当中增加数据列 二、回到绘图中&#xff0c;双击图层 三、修改增加图像的格式 四、根据需要删除图例中多余的部分

【linux网络(四)】传输层协议详解(上)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux网络 1. 前言2. UDP协议…

ABAP开发:屏幕输入中,在多个选项卡中如何确定选择了哪个Tab Strips?

在ABAP开发中&#xff0c;使用了SELECTION-SCREEN来创建了一个带有多个选项卡&#xff08;Tab Strips&#xff09;的屏幕。每个选项卡对应一个不同的屏幕编号&#xff08;SCREEN 101, 102, 103&#xff09;&#xff0c;如下图&#xff1a; 屏幕中有Name、Age、City三个标签选择…