官网文档:https://jwt-auth.readthedocs.io/en/docs/
教程 : https://blog.csdn.net/ben_cxy/article/details/106658851
备注:
- 对于 Laravel 版本 低于 5.5 的应用,您还要在 config/app.php 文件中设置服务提供者和别名。如果您的 Laravel 版本为 5.5 或以上,Laravel 会进行「包自动发现」,不需要手动添加设置。
- 对于 5.5 或以上版本 的 Laravel,请使用下面这条命令来发布配置文件: php artisan vendor:publish --provider="TymonJWTAuthProvidersLaravelServiceProvider"
- 如果使用jwt-auth作为用户认证,默认的模型文件为 config/auth.php 中设置的 model。(默认的user模型文件为app/user.php, 网上教程习惯为 app/model/user.php)
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => AppModelUser::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], ],
- 测试请求时 api/auth/login?email=123@qq.com&password=123,在数据库内储存的 password 字段需要进行加密储存,加密方式 password_hash(123, PASSWORD_DEFAULT)
多表登陆问题:
- 参考: https://learnku.com/articles/28881 https://learnku.com/articles/30342#reply102021
- 配置文件设置为
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], // 默认 'api' => [ // 'driver' => 'token', // 'provider' => 'users', 'hash' => false, 'driver' => 'jwt', 'provider' => 'users', ], // 新增admins 模块 'admin' => [ 'driver' => 'jwt', 'provider' => 'admins', ] ], 'providers' => [ // user 模块对应数据表 'users' => [ 'driver' => 'eloquent', 'model' => AppModelUser::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], // admin 模块对应数据表 'admins' => [ 'driver' => 'eloquent', 'model' => AppModelAdmin::class, ] ],
- 对应模型设置增加对应识别字段
// admin public function getJWTCustomClaims() { // 区分管理与用户的jwt,防止越权 return ['role' => 'admin']; } // user public function getJWTCustomClaims() { // 区分管理与用户的jwt,防止越权 return ['role' => 'user']; }
- 调用时 admin/user调用
// api 对应 user 模型 , admin 对应 admin模型 // auth(config/auth.php中providers对应的键名) auth('api') auth('admin')
参考:
- https://blog.csdn.net/ttaohua/article/details/100175144
- https://blog.csdn.net/ben_cxy/article/details/106658851
- https://blog.csdn.net/amazingdyd/article/details/84849915
- https://learnku.com/laravel/t/27760
- https://blog.csdn.net/amazing_jin/article/details/81170964
- https://learnku.com/laravel/t/46984
- https://jwt-auth.readthedocs.io/en/docs/resources/
- https://github.com/tymondesigns/jwt-auth/issues/1094
- https://stackoverflow.com/questions/53404230/laravel-jwt-returns-error-unauthorized-on-login
- https://learnku.com/articles/30342 实现多表 jwt登陆