Laravel7 配置jwt ,并处理 Unauthorized 错误
官网文档: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="Tymon\JWTAuth\Providers\LaravelServiceProvider"
- 如果使用jwt-auth作为用户认证,默认的模型文件为 config/auth.php 中设置的 model。(默认的user模型文件为app/user.php, 网上教程习惯为 app/model/user.php)
则需要修改User模型。'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Model\User::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' => App\Model\User::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], // admin 模块对应数据表 'admins' => [ 'driver' => 'eloquent', 'model' => App\Model\Admin::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登陆
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/13462468.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/13462468.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义