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

简介: 这篇文章介绍了如何在Supabase中使用Github授权登录并实现用户身份验证。文章首先说明了Supabase采用postgresql的Row Level Security(RLS)机制来控制不同用户对数据表访问权限的重要性,然后详细介绍了配置Github OAuth Apps的过程,包括创建新的OAuth应用、填写项目信息、设置回调URL等步骤。接着,文章展示了在Nuxt3中实现登录界面的代码示例,最后总结了通过本教程可以学习到的技能,并预告了下一篇文章将介绍如何在Nuxt3中创建RESTful风格API并结合Supabase数据库完成CURD操作。

前言

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

Auth Providers

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

769valdrmyzvrrjvs8ryhy547v2gmo4q.png

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

配置 Github OAuth Apps

  1. 打开 OAuth Apps 页面,点击 New Oauth App
    kybgh4krmvmt47o8ncwcdgeeqb10ykfw.png

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

  3. 打开刚创建的 Oauth App,这里可以根据需要设置 Oauth App 信息,点击 Generate a new client secret 复制密钥
    v3w8mpgtl8xqaas2w5zuamed6fguzs0u.png

  4. 打开 Supabase Providers 页面,找到 Github,将 Client IDClient Secret 分别填入,点击 Save
    ecefyrlhij3c72ho0f63ksjss71gxwun.png

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>
    
  2. 新建 /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>
    

最终效果

xhcb3wi5lfqoggl36wt82h045635wxsm.gif

总结

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

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

相关文章
|
4月前
|
数据采集 缓存 JSON
GitHub 开源爆款工具|MediaCrawler:程序员零门槛采集抖音/小红书/B站等社交评论,30K star 背后的场景实战揭秘!
MediaCrawler 是一个支持多平台的社交媒体数据爬虫工具,覆盖小红书、抖音、B站等主流平台,提供关键词/ID爬取、评论采集、登录态缓存、代理池等功能,结合 Playwright 实现浏览器模拟,降低逆向难度,适合内容运营、数据分析等场景,开源免费,使用简便。
999 0
|
5月前
|
自然语言处理 关系型数据库 PostgreSQL
Github 10.1k star 的高颜值实时Kanban,看完就想收藏!引爆团队效率的开源利器:Planka 实战深度解析
Planka 是一款开源协作看板工具,支持多人实时协作、Markdown 编辑、通知提醒等功能。基于 MIT 许可,可自托管部署,适合中小团队和个人高效管理任务。
294 0
|
7月前
|
JSON JavaScript API
MCP 实战:用配置与真实代码玩转 GitHub 集成
MCP 实战:用配置与真实代码玩转 GitHub 集成
1533 4
|
存储 安全 开发工具
GitHub 支持双因素认证(2FA)
【9月更文挑战第29天】
1755 6
|
存储 安全 UED
GitHub OAuth认证的Django应用
GitHub OAuth认证的Django应用
167 0
|
SQL 安全 网络安全
GitHub点赞飙升!电信大牛的Python渗透测试实战指南
在网络安全领域,会不会编程,是区分“脚本小子”和真正黑客的关键。实际的渗透测试中会遇到各种复杂的网络环境,常用工具不一定能满足需求,这时就需要对现有工具进行扩展,或者编写符合要求的工具、自动化脚本,这都需要一定的编程能力。在分秒必争的 CTF 竞赛中,想要高效地使用自制脚本工具来达成各种目的,更是需要有编程能力。 Python 这两年越来越火!除了语法简单、开发效率高以外,Python 最大的优势就是拥有超多第三方库。很多有名的网络安全工具和安全系统框架都是用 Python 开发的!所以,掌握 Python 编程已经成为网络安全从业者的必备技能之一。如果你想成为一名合格的安全从业者,就不能只会
爆赞!GitHub首本Python开发实战背记手册,标星果然百万名不虚传
Python (发音:[ 'paiθ(ə) n; (US) 'paiθɔn ] n. 蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。 Python 语言的特点:
|
jenkins 持续交付
jenkins学习笔记之九:jenkins认证集成github
jenkins学习笔记之九:jenkins认证集成github
|
JSON 数据挖掘 API
数据分析实战丨基于pygal与requests分析GitHub最受欢迎的Python库
数据分析实战丨基于pygal与requests分析GitHub最受欢迎的Python库
185 2
|
开发者 Python
GitHub飙升!京东认证的“Python编程入门三剑客”究竟好在哪?
Python凭借着简单易学、功能强大,已经跃居TIOB编程语言榜首,并且已经开始了它的霸榜之旅。如何选择一套适合自己的Python学习教程,是每个Python爱好者面临的首要问题。