多会话
学习如何在 Better Auth 中使用多会话插件。
多会话插件允许用户在同一浏览器中跨不同账户保持多个活动会话。该插件适用于需要用户在多个账户之间切换而不登出的应用。
安装
将插件添加到你的 auth 配置中
import { betterAuth } from "better-auth"
import { multiSession } from "better-auth/plugins"
export const auth = betterAuth({
plugins: [
multiSession(),
]
})添加客户端插件
添加客户端插件,并指定用户需要验证二次身份验证时应重定向的页面
import { createAuthClient } from "better-auth/client"
import { multiSessionClient } from "better-auth/client/plugins"
export const authClient = createAuthClient({
plugins: [
multiSessionClient()
]
})使用
每当用户登录时,插件会向浏览器添加额外的 cookie。该 cookie 用于维护跨不同账户的多个会话。
列出所有设备会话
要列出当前用户的所有活跃会话,可以调用 listDeviceSessions 方法。
GET/multi-session/list-device-sessions
const { data, error } = await authClient.multiSession.listDeviceSessions();设置活动会话
要设置活动会话,可以调用 setActive 方法。
POST/multi-session/set-active
const { data, error } = await authClient.multiSession.setActive({ sessionToken: "some-session-token", // required});Parameters
sessionTokenstringrequired要设置为活动的会话令牌。
撤销会话
要撤销会话,可以调用 revoke 方法。
POST/multi-session/revoke
const { data, error } = await authClient.multiSession.revoke({ sessionToken: "some-session-token", // required});Parameters
sessionTokenstringrequired要撤销的会话令牌。
登出并撤销所有会话
当用户登出时,插件会撤销该用户所有活跃会话。你可以调用现有的 signOut 方法,它会自动处理撤销所有会话。
最大会话数
你可以通过传递 maximumSessions 选项给插件来指定用户最多允许的会话数。默认情况下,插件允许每个设备5个会话。
import { betterAuth } from "better-auth"
import { multiSession } from "better-auth/plugins"
export const auth = betterAuth({
plugins: [
multiSession({
maximumSessions: 3
})
]
})