一次性令牌插件

一次性令牌(OTT)插件提供了生成和验证安全的、单次使用会话令牌的功能。这些通常用于跨域身份验证。

安装

auth.ts
import { betterAuth } from "better-auth";
import { oneTimeToken } from "better-auth/plugins/one-time-token";
 
export const auth = betterAuth({
    plugins: [
      oneTimeToken()
    ]
    // ... 其他auth配置
});

使用方法

1. 生成令牌

使用auth.api.generateOneTimeTokenauthClient.oneTimeToken.generate生成令牌

const response = await auth.api.generateOneTimeToken({
    headers: await headers() // 传递请求头
})

这将返回一个附加到当前会话的token,可用于验证一次性令牌。默认情况下,令牌将在3分钟后过期。

2. 验证令牌

当用户点击链接或提交令牌时,在另一个API路由中使用auth.api.verifyOneTimeTokenauthClient.oneTimeToken.verify方法来验证它。

const token = request.query.token as string; //获取令牌
const response = await auth.api.verifyOneTimeToken({
    body: {
        token
    }
})

这将返回附加到令牌的会话。

选项

这些选项可以在添加oneTimeToken插件时配置:

  • disableClientRequest (boolean): 可选。如果为true,令牌将只在服务器端生成。默认值:false
  • expiresIn (number): 可选。令牌有效的持续时间(分钟)。默认值:3
oneTimeToken({
    expiresIn: 10 // 10分钟
})

On this page