本期视频登录后即可观看
Sanctum 授权认证 - Sanctum(AirLock) 让 Laravel API 开发和授权适用更多的应用场景
本期 Laravel 7 视频教程咱们介绍一下 Laravel 最新引入的辅助开发包 Sanctum Airlock, 它采取的是github风格的授权方案,让咱们可以更加灵活的控制授权的流程和验证授权,本套视频课程咱们重点关注的是授权部分,至于API的开发部分,咱们也将开设专门的课程。
微信扫码登录
![](https://www.coding10.com/images/auth/default.png)
出新视频啦。喜欢每个视频前的配图。。赞。
哎,我做网站就是一个自我折磨的过程
能坚持下来真不容易 ,加油!
每个视频之前的配图,是用心的。赞。
这是种情怀。
被作者的,视频封面和片尾, 吸引, 买了会员, 你敢信? 有和我一样的同学没
https://github.com/laravel/sanctum/blob/4961787dcb82d17c77754ec69051168992b7fa57/src/Guard.php#L67
想把created_at 改成last_used_at,有什么好的方式么?
你应该修改updated at 才符合逻辑啊,为啥修改创建的时间字段,你可以用下面的方式试一下:
const UPDATED_AT='last_used_modified';
Sanctum 默认的过期逻辑是定义了过期时间后,根据created_at字段来判断是否过期,这样不就用户正在操作也会过期么。想改成用last_used_at来判断
哈哈,我都没注意你说的是sanctum里的内容,这个必须要以创建时间作为判断条件,sanctum里颁发的令牌通常时效都很长的,这段时间内应用或网站很可能早发生过多次更新了。没关系的,即便过期了,再颁发一个就行了,这样可以更好的保护安全性,而不是说一直延长token令牌的时效期,那就太不专业了,是一种想当然的做法,千万不要这么干,过期就让它过期就好。咱们自己手机上用的很多应用哪个没有重新登录过啊,甚至手机都换过多少次了。
如果想做1小时无操作就退出登录的需求,不是就应该这样么?如果按照默认的逻辑,设置了过期时间,过期时间一到就会过期,岂不是用户正在操作中也会过期?
想复杂了,如果是这种需求,在前端处理就可以了,不需要去操作token的,而且咱们讨论的last_used_at这个字段本身在sanctum中也是存在的,并不需要咱们把created_at字段进行修改,如果一定要用token的话,让当前的时间去跟personal_access_token的last_used_at做比较就行了,但是这会涉及到对token的频繁删除和创建,如果是安全性要求极高的项目,这么做是有必要的,但是绝大部分项目只需在前端处理即可。
我没说要修改created_at,只是说把用created_at来判断改成用last_used_at来判断,sanctum中本身就有这个字段可以用来判断。如果不这样做,有更好的方式么?
官方应该没有提供这个定制,只能咱们自己做判断了,因为Sanctum跟Passport不同,Sanctum token的有效期都很长,所以只能靠自己写逻辑,可以搞一个middleware,这样至少代码层面上比较简洁,可维护性也比较高,更好的办法,我想不到了,坐等大家更好的方法吧。
搞一个middleware就要多一次数据库操作,Sanctum本身每次请求都要进行三次数据库查询了,我一开始也是自己写了个middleware,后来发现直接修改Sanctum能减少一次查询。