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