多会话管理
多会话插件
多会话插件允许用户在同一浏览器中跨不同账户维护多个活动会话。该插件适用于需要用户在不登出的情况下切换多个账户的应用程序。
安装
将插件添加到 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-sessionsconst { data, error } = await authClient.multiSession.listDeviceSessions();
设置活动会话
要设置活动会话,可以调用 setActive
方法。
POST
/multi-session/set-activeconst { data, error } = await authClient.multiSession.setActive({ sessionToken: "some-session-token", // required});
属性 | 描述 | 类型 |
---|---|---|
sessionToken | 要设置为活动会话的会话令牌。 | string |
撤销会话
要撤销会话,您可以调用 revoke
方法。
POST
/multi-session/revokeconst { data, error } = await authClient.multiSession.revoke({ sessionToken: "some-session-token", // required});
属性 | 描述 | 类型 |
---|---|---|
sessionToken | 要撤销的会话令牌。 | string |
登出并撤销所有会话
当用户登出时,插件将撤销该用户的所有活动会话。您可以通过调用现有的 signOut
方法来实现此操作,该方法会自动处理撤销所有会话。
最大会话数
您可以通过向插件传递 maximumSessions
选项来指定用户可以拥有的最大会话数。默认情况下,插件允许每个设备拥有 5 个会话。
import { betterAuth } from "better-auth"
export const auth = betterAuth({
plugins: [
multiSession({
maximumSessions: 3
})
]
})