需求:
同一时间只允许登录唯一一台设备。例如设备 A 中用户如果已经登录,那么使用设备 B 登录同一账户,设备 A 就无法继续使用了
实现思路:
在用户表添加last_token字段,利用组件中的**invalidate**方法,每次登录将last_token字段加入黑名单,登陆成功后将last_token字段更新为生成的token值
实现方法
Auth::setToken($user->lastToken)->invalidate(true)
注意事项
-
上述方法中的setTokenn传入的token不需要Bearer 的前缀
-
如果在config/jwt.php配置文件的show_black_list_exception参数必须设置为true,否则黑名单无效
show_black_list_exception' => env('JWT_SHOW_BLACKLIST_EXCEPTION', true)
参考文献
-
[JWT-Auth 黑名单功能 | Laravel China 社区 (learnku.com)](https://learnku.com/articles/12679/jwt-auth-blacklist-function) -
[Home - Laravel JWT Auth (laravel-jwt-auth.readthedocs.io)](https://laravel-jwt-auth.readthedocs.io/en/latest/)