0

0

使用 Nuxt v3 设置 Supabase Auth

碧海醫心

碧海醫心

发布时间:2024-10-17 20:21:04

|

707人浏览过

|

来源于dev.to

转载

实现身份验证是您在大多数项目中都会做的事情,但由于您实际执行此操作的频率,您可能仍然不记得如何执行此操作。

以下是有关使用 nuxt v3 实施 supabase auth 的快速方法。在此示例中,我们将使用 otp,但它适用于所有情况。

您首先要访问 supabase 的网站来开始您的项目。

在 supabase 中创建项目并在 nuxt 上启动项目后,我们希望通过执行以下操作来安装 supabase nuxt 包:

npx nuxi@最新模块添加supabase

然后我们将创建 .env 文件并添加以下环境变量:

supabase_url=
supabase_key=

您可以在项目的 supabase 仪表板上的“设置 -> api”下找到这些

使用 Nuxt v3 设置 Supabase Auth

之后,我们就可以设置我们的项目了。到目前为止我已经制作了 2 个非常基本的文件:

三虎(3hooCMS)企业建站系统2 SP2
三虎(3hooCMS)企业建站系统2 SP2

本版本为春节前最后版本,主要是改进SP2的BUG以及处理多版本共存问题。V3将在春节后公布开发进度!改进以下功能: 后台帐号admin 密码:3hooCMS 程序版本:3hooCMS V2 SP2修正组件支持,后台提供组件支持设置,无组件环境关闭组件支持也可以使用。 修正默认模版IE6兼容问题。 重写伪静态规则,空间支持伪静态可以后台开启伪静态。 更新双语默认模版。 默认模版重写调用演示!写出最大

下载
  1. auth.ts(我使用了 pinia 商店,但随意使用常规文件)
import { definestore } from "pinia";

export const useauthstore = definestore("auth", () => {
  const supabase = usesupabaseclient();

  const sendotp = async (email: string) => {
    const { error } = await supabase.auth.signinwithotp({
      email,
    });

    if (error) {
      throw error;
    }

    return true;
  };

  const verifyotp = async (email: string, otp: string) => {
    const { error } = await supabase.auth.verifyotp({
      type: "email",
      token: otp,
      email,
    });

    if (error) {
      throw error;
    }

    return true;
  };

  return {
    sendotp,
    verifyotp,
  };
});
  1. loginform.vue





请注意,我也使用 nuxtui,以防出现任何错误。

因为默认情况下,signinwithotp 函数会发送一个魔术链接,因此您必须更改 supabase 仪表板上的电子邮件模板才能发送令牌:

使用 Nuxt v3 设置 Supabase Auth
这可以在身份验证 -> 电子邮件模板 -> 更改确认注册和 magic link 模板下找到以使用 {{ .token }}

差不多就这些了,您已经拥有工作授权了!
如果你想添加注销,你还可以在之前的文件中添加一个方法,如下所示:

const signout = async () => {
  const { error } = await supabase.auth.signout();

  if (error) {
    throw error;
  }

  return true;
};

但是,如果您想保护某些路由,我们也可以添加中间件。

在根目录上创建一个名为 middleware 的文件夹(名称是 key)和一个名为 auth.ts 的文件。

然后您可以添加如下内容:

export default definenuxtroutemiddleware((to) => {
  const user = usesupabaseuser();

  const protectedroutes = ["/app"];

  if (!user.value && protectedroutes.includes(to.path)) {
    return navigateto("/auth");
  }

  if (user.value && to.path === "/auth") {
    return navigateto("/");
  }
});

这基本上可以保护您的 /app 路由免受服务器的影响,因此,如果您尝试在未登录的情况下访问 /app,您将被重定向到 /auth。

同样,如果您在已登录的情况下尝试访问 /auth,您将被重定向到主页 /。

现在,要使用它,您可以将其放置在任何组件的


就是这样,就这么简单!

相关专题

更多
什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

178

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

213

2025.12.18

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6101

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

810

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1063

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1269

2024.03.01

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

11

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

4

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

16

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 6.9万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号