gpt4 book ai didi

laravel - 将 Laravel 8 与 Sanctum hasapitokens 一起使用以使用记住我的选项登录

转载 作者:行者123 更新时间:2023-12-05 02:41:24 26 4
gpt4 key购买 nike

因此,我使用 Vue 3、Laravel 8 构建了一个 SPA,并使用 sanctum (hasapitokens) 来处理用户登录,但我找不到 token 有效的 session 持续时间,因为我想将其与用户登录时记住我的选项。这是否可能,或者使用这些 token 是否是处理用户身份验证的不良示例?

最佳答案

这通常是通过 cookie 完成的,但是在处理 sanctum 身份验证时,它有点棘手。

我想,为什么我不在使用“记住我”选项登录时延长密室 token 的到期日期?但显然你不能用 sanctum 制作具有不同到期日期的不同 token ,所以这里有一个替代方案。


A.使用 Sanctuary token 的能力:

在创建用户 token 时,将“记住”能力添加到能力列表中。

$user->createToken('auth_token_name', ['remember']);

然后在App/Providers/AppServiceProvider.php文件中的boot()方法中添加

Sanctum::authenticateAccessTokensUsing(function (PersonalAccessToken $token, $isValid) {
if($isValid) return true;
return $token->can('remember') && $token->created_at->gt(now()->subYears(5));
});

通常 Laravel 的“记住 cookie”的有效期为五年。您可以在此处随意将其更改为任何持续时间。


B.向 token 表添加过期列 (TL;DR)

我还没有亲自测试这个,因为它有很长的路要走,但应该为您提供一个替代方案,以防您不想弄乱 token 的能力。首先,您需要修改密室迁移以包含过期列 (as in here)。然后您需要覆盖 PersonalAccessToken 模型 ( as in here ) 以在可填充属性中包含过期列。然后就可以在AppServiceProvider中的boot()方法中添加

Sanctum::authenticateAccessTokensUsing(function (PersonalAccessToken $token, $isValid) {
return $isValid ?: $token->expiration->gt(now());
});

唯一的问题是您需要设置到期日期,因此要么从数据库中获取新创建的 token 并对其进行修改,要么覆盖用户模型中的 HasApiToken::createToken 函数以使用到期参数。

关于laravel - 将 Laravel 8 与 Sanctum hasapitokens 一起使用以使用记住我的选项登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68140778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com