Laravel Sanctum 生成的TOKEN时间竟然很长,会不会不安全

虽然可以设置一下有效期,但基本上都时间很长

有没有办法比如说,设置 60 分钟到期,但是刚好快到期的内分钟内操作,就自动更新 TOKEN 的有效期增加 60 分钟

官方虽然可以让你设置时间,但是感觉都是要设置很久,如果设置很短,操作没一会儿就被退出也不行,没有办法像 SESSION 那样,只要有在操作就不会过期

刚刚试了一下,
我在配置文件中定义 expiration 了,但是数据库中的 expires_at 竟然为 null 你们有谁碰到过没

看了一下源代码,自己在
‘access_token’ => $user->createToken(‘seller user’, [‘seller-user’], now()->addHours(2))->plainTextToken
指定第三个参数,就可以写入过期时间了,这点和手册里面写的通过配置文件修改是完全不一样的,而且英文手册也是这样写的,完了,这让我不敢用了,很没安全感

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 29

oauth 授权策略的刷新令牌,检测到 401 或者授权失效就用刷新令牌刷新,或者自己监测,token 还有十分钟就刷新,两种组合起来用

2年前 评论

我是每次請求都會去更新一下到期時間 雖然性能比較差 但是對於後台來說夠用了 因為後台前後端分離了 就用這個代替 session 了

Laravel

他底層是會每次都會更新使用時間 我本來是想讓這兩個一起更新 但是看他源碼融合不了 就只能先更新到期時間 然後它底層再去更新一次使用時間了
本來是想讓這兩個融合一起更新的

2年前 评论

定时任务每分钟调用

PersonalAccessToken::where('last_used_at', '<', now()->subHour())->delete();

laravel 会自动刷新 last_used_at, 这样就跟 session 机制一样了,使用就一直不过期,不使用就一小时过期

2年前 评论

我在配置文件中定义 expiration 了,但是数据库中的 expires_at 竟然为 null 你们有谁碰到过没

2年前 评论
winter-ice 2年前
winter-ice 2年前
深蓝色 (作者) (楼主) 2年前
winter-ice 2年前
深蓝色 (作者) (楼主) 2年前
winter-ice 2年前

我在调用的时候 $user->createToken ('seller user', ['seller-user'], now ())->plainTextToken 注意看第三个参数,加了一下时间,数据库就有了,这明显是一个 BUG 啊,和手册说的并不一样

2年前 评论

可以在 AppServiceProvider 中自定义过期的方法,我们这边是这么做的

//自定义token是否过期的方法
Sanctum::authenticateAccessTokensUsing(function ($accessToken){
    $expiration = config('sanctum.expiration', 120);
    $time = $accessToken->last_used_at??$accessToken->created_at;
    return $time->gt(now()->subMinutes($expiration));
});
2年前 评论
深蓝色 (楼主) 2年前
神的孩子丶都在跳舞 (作者) 2年前
神的孩子丶都在跳舞 (作者) 2年前
深蓝色 (楼主) 2年前
神的孩子丶都在跳舞 (作者) 2年前
深蓝色 (楼主) 2年前
神的孩子丶都在跳舞 (作者) 2年前

expires_at 和配置文件里的 expiration 没有关系,你看下包里验证的规则就知道了 file

2年前 评论
深蓝色 (楼主) 2年前
深蓝色 (楼主) 2年前
神的孩子丶都在跳舞 (作者) 2年前
深蓝色 (楼主) 2年前
神的孩子丶都在跳舞 (作者) 2年前
神的孩子丶都在跳舞 (作者) 2年前

不是,你是不是理解错了? sanctum 颁发 token 的时候本身在库中就不会存储过期时间,过期时间是统一在 config/sanctum.php 文件中配置的。

你在文档哪里看到的可以自定义 token 有效期的?

2年前 评论
深蓝色 (楼主) 2年前

不过这个过期时间设置长了怕不安全,设置短了又怕操作一半要求验证,这个头大。

2年前 评论