Laravel Sanctum 生成的TOKEN时间竟然很长,会不会不安全
虽然可以设置一下有效期,但基本上都时间很长
有没有办法比如说,设置60分钟到期,但是刚好快到期的内分钟内操作,就自动更新TOKEN的有效期增加60分钟
官方虽然可以让你设置时间,但是感觉都是要设置很久,如果设置很短,操作没一会儿就被退出也不行,没有办法像SESSION那样,只要有在操作就不会过期
刚刚试了一下,
我在配置文件中定义 expiration 了,但是数据库中的 expires_at 竟然为 null 你们有谁碰到过没
看了一下源代码,自己在
‘access_token’ => $user->createToken(‘seller user’, [‘seller-user’], now()->addHours(2))->plainTextToken
指定第三个参数,就可以写入过期时间了,这点和手册里面写的通过配置文件修改是完全不一样的,而且英文手册也是这样写的,完了,这让我不敢用了,很没安全感
oauth授权策略的刷新令牌,检测到401或者授权失效就用刷新令牌刷新,或者自己监测,token还有十分钟就刷新,两种组合起来用
我是每次請求都會去更新一下到期時間 雖然性能比較差 但是對於後台來說夠用了 因為後台前後端分離了 就用這個代替session了
他底層是會每次都會更新使用時間 我本來是想讓這兩個一起更新 但是看他源碼融合不了 就只能先更新到期時間 然後它底層再去更新一次使用時間了
本來是想讓這兩個融合一起更新的
定时任务每分钟调用
PersonalAccessToken::where('last_used_at', '<', now()->subHour())->delete();
laravel 会自动刷新
last_used_at
,这样就跟session机制一样了,使用就一直不过期,不使用就一小时过期我在配置文件中定义expiration了,但是数据库中的expires_at竟然为null 你们有谁碰到过没
我在调用的时候 $user->createToken('seller user', ['seller-user'], now())->plainTextToken 注意看第三个参数,加了一下时间,数据库就有了,这明显是一个BUG啊,和手册说的并不一样
可以在AppServiceProvider中自定义过期的方法,我们这边是这么做的
expires_at
和配置文件里的expiration
没有关系,你看下包里验证的规则就知道了不是,你是不是理解错了? sanctum 颁发 token 的时候本身在库中就不会存储过期时间,过期时间是统一在
config/sanctum.php
文件中配置的。你在文档哪里看到的可以自定义 token 有效期的?
不过这个过期时间设置长了怕不安全,设置短了又怕操作一半要求验证,这个头大。