# 多令牌支持

/*
|--------------------------------------------------------------------------
| 多令牌支持
|-----------------------------------------------------------------------------------------
|
| 启用后,用户可以同时持有多个有效令牌,
| 例如,每个平台(Web、APP、API 等)同时持有多个有效令牌。
|
*/

'multi_token' => [
    
    /*
    |-----------------------------------------------------------------------------------
    | 是否启用多令牌支持
    |-----------------------------------------------------------------------------------------
    |
    | 此选项决定是否可以为单个用户发放多个有效令牌。
    | 启用后,用户可以在不同平台(例如Web、APP或 API 客户端)上持有不同的令牌,
    | 从而允许同一帐户下同时进行会话。
    |
    */
    
    'enabled' => true,
    
    /*
    |--------------------------------------------------------------------------------------
    | 允许多个平台
    |--------------------------------------------------------------------------------------
    |
    | 设置为 true 时,不同平台(例如,“PC”、“移动”、“应用”)的令牌
    | 可以同时保持有效。
    | 如果为 false,则发放新令牌将使所有现有令牌失效
    | 无论平台如何。
    |
    */
    
    'allow_multi_platforms' => true,
    
    /*
    |--------------------------------------------------------------------------
    | 多平台令牌
    |---------------------------------------------------------------------------
    |
    | 允许同一用户同时拥有多个有效令牌的平台列表。
    | 示例:['pc'] 允许同时为 PC 平台拥有多个令牌。
    |
    */
    
    'multi_platform_tokens' => [],
],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

TIP

allow_multi_platforms 设置为 true 时,不同平台(例如,PCmobileApp)的令牌可以同时保持有效。 设置为 false 时,无论平台如何,发放新令牌都将使所有现有令牌失效。

TIP

multi_platform_tokens 允许同一用户同时拥有多个活动令牌的平台列表。 示例:['pc'] 允许同时为 PC 平台使用多个令牌。

# 配置优先级

config/auth.php 中的 guards 配置优先于 config/tokenable.php 中的 multi_token 配置,因此可以在 config/auth.php 中覆盖 config/tokenable.php 中的配置。

'guards' => [
    'api' => [
        'driver' => 'tokenable',
        'provider' => 'users',
        'allow_multi_platforms' => false,
    ],
    'web' => [
        'driver' => 'tokenable',
        'provider' => 'users',
        'allow_multi_platforms' => true,
        'multi_platform_tokens' => ['pc', 'h5'],
    ],
],
1
2
3
4
5
6
7
8
9
10
11
12
13

上述配置将允许同一用户在 PCH5 平台各签发多个令牌,但 API 平台仅有一个最新令牌有效。

use Illuminate\Support\Facades\Auth;
// api
Auth::guard('api')->login($user)->createToken('API Token');
// web
Auth::guard('web')->login($user)->createToken('PC Token', 'pc');
Auth::guard('web')->login($user)->createToken('H5 Token', 'h5');
1
2
3
4
5
6