多会话

多会话插件允许用户在同一浏览器中跨不同账户维护多个活跃会话。此插件适用于需要用户在不注销的情况下切换多个账户的应用程序。

安装

将插件添加到您的auth配置中

auth.ts
import { betterAuth } from "better-auth"
import { multiSession } from "better-auth/plugins"
 
export const auth = betterAuth({
    plugins: [ 
        multiSession(), 
    ] 
})

添加客户端插件

添加客户端插件并指定如果用户需要验证第二因素时应该被重定向到哪里

auth-client.ts
import { createAuthClient } from "better-auth/client"
import { multiSessionClient } from "better-auth/client/plugins"
 
const authClient =  createAuthClient({
    plugins: [
        multiSessionClient()
    ]
})

使用方法

每当用户登录时,插件会向浏览器添加额外的cookie。这个cookie将用于跨不同账户维护多个会话。

列出所有设备会话

要列出当前用户的所有活跃会话,您可以调用listDeviceSessions方法。

await authClient.multiSession.listDeviceSessions()

在服务器端,您可以调用listDeviceSessions方法。

await auth.api.listDeviceSessions()

设置活跃会话

要设置活跃会话,您可以调用setActive方法。

await authClient.multiSession.setActive({
    sessionToken: "session-token"
})

撤销会话

要撤销会话,您可以调用revoke方法。

await authClient.multiSession.revoke({
    sessionToken: "session-token"
})

注销并撤销所有会话

当用户注销时,插件将撤销用户的所有活跃会话。您可以通过调用现有的signOut方法来执行此操作,该方法会自动处理撤销所有会话。

最大会话数

您可以通过向插件传递maximumSessions选项来指定用户可以拥有的最大会话数。默认情况下,插件允许每个设备有5个会话。

auth.ts
import { betterAuth } from "better-auth"
 
export const auth = betterAuth({
    plugins: [
        multiSession({
            maximumSessions: 3
        })
    ]
})

On this page