1:首先通过composer进行安装
composer require tymon/jwt-auth
2:添加服务提供者
编辑 config/app.php,在 "providers" 添加:
'Tymon\JWTAuth\Providers\JWTAuthServiceProvider',
3:添加 Facades
编辑 config/app.php,在 "alias" 添加:
'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth',
'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory',
4:发布配置文件:
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
5:生成 secret key
: php artisan jwt:generate
安装完成后,执行 php artisan jwt:generate,会报错:
(1).Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist
解决方法,这个需要修改源码:
编辑 vendor/tymon/jwt-auth/src/Commands/JWTGenerateCommand.php,新增:
/** * Compatiblity with Laravel >= 5.5 */ public function handle() { $this->fire(); }
(2)如果未添加服务提供者,直接执行该命令,可能也会报错!
There are no commands defined in the "jwt" namespace
解决方法:
就是上面的添加服务提供者
配置(Configuration)
secret(secret key) - 秘钥
用来签名 token 的秘钥。作者将秘钥与 Laravel 的 APP_KEY 分开,以便开发者可以独立地修改它们。
提供了一个 artisan 命令,为我们生成一个随机秘钥。(php artisan jwt:generate)
ttl(token time to live) - token 生存时间
token 的有效时间,以分钟为单位。建议尽可能设置短点,尤其是当我们也使用 token 刷新机制。
refresh_ttl(refresh time to live) - refresh 生存时间
可以刷新 token 的有效时间,以分钟为单位。例如,如果设置为 2周,那么只能在 2周 内,刷新对应的 token,否则将会抛出 TokenExpiredException 异常。如果超过了刷新的有效时间,必须生成一个全新的 token,这意味着用户需要重新登录。
注:ttl 和 refresh_ttl,用于保持用户的登录状态
algo(hashing algorithm) - hash 算法
用于签名 token 的算法,保留默认值即可
user(user model path) - 用户模型路径
应该指向我们项目的 User 类的命名空间路径