使用php-open-source-saver/jwt-auth组件实现黑名单功能

317 阅读1分钟

需求:

同一时间只允许登录唯一一台设备。例如设备 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/)