前言
Supabase 使用的是 postgresql 的 Row Level Security (RLS),可以限制不同用户对同一张表的不同数据行的访问权限。这种安全机制可以确保只有授权用户才能访问其所需要的数据行,保护敏感数据免受未授权的访问和操作。
Auth Providers
打开 Supabase Providers 页面,这里我们可以看到 Supabase 提供了 20
多种验证方式:
我们可以根据自己项目的实际情况选择适合的第三方登录,这里我们以 Github
为例。
配置 Github OAuth Apps
-
打开 OAuth Apps 页面,点击
New Oauth App
-
填入项目的信息,这里的
Homepage URL
我们可以先填本地开发的地址,等部署上线再改成线上地址,Authorization callback URL
填入 Supabase 提供的Callback URL (for OAuth)
,然后点击Register Application
-
打开刚创建的
Oauth App
,这里可以根据需要设置Oauth App
信息,点击Generate a new client secret
复制密钥
-
打开 Supabase Providers 页面,找到
Github
,将Client ID
和Client Secret
分别填入,点击Save
。
Nuxt3 登录鉴权
Nuxt3 中集成了 @nuxtjs/supabase,我们只需要准备两个文件即可:login.vue
、confirm.vue
。
- 新建
/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-buttontype="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>
- 新建
/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 操作。