sustartx / jwt-redis-multi-auth
JWT Redis 多重认证
v1.2
2023-07-07 10:54 UTC
Requires
- php: >=7.2
- php-open-source-saver/jwt-auth: ^2.1
- spatie/laravel-permission: ^5.5.4
README
描述
在我开发的一个Laravel项目中,我需要使用JWT进行会话和授权操作。由于我通常使用的 tymon/jwt-auth
包已经过时,而且我还需要使用 spatie/laravel-permission
包,所以我开始寻找一个通用包,最终找到了 Samet Şahin Doğan 开发的 sametsahindogan/laravel-jwtredis
包。由于这个包内部存在一些小的依赖问题,我根据自己的需求进行了完全的修改,并尝试以不同的方式重新编写这个包。我用 php-open-source-saver/jwt-auth
替换了 JWT 包,解决了问题。
除了 User
模型之外,所有从 JWTRedisMultiAuthAuthenticatableBaseModel
类扩展的模型都可以用于会话管理。
感谢 Samet Şahin Doğan 为其 laravel-jwtredis
包所做的工作。
我将尽快准备一份关于该包使用的详细内容,并附上一个示例项目。
待办事项
- 应该能够使用不同的模型进行登录
- 应该能够为所需的模型生成特定的JWT
- 应该能够检测出传入的请求将由哪个Guard、Provider和Model处理
- 在登录过程中应该能够获取权限
- 应该能够将信息保存到Redis中
- 应该通过观察者(Observer)在模型中的任何更改时更新Redis数据
- 应该完成中间件(Middleware)的处理
- 在登录过程中应该自动检测相关模型,并在Redis键部分中按 $model_adi + $model_id 的格式确定键
- 当用户更新时应该更新Redis数据
- 应该启用Refreshable功能
- 当权限(关系操作)更新时应该更新Redis数据
- 应该更新响应结构
- 应该能够通过Cookie和Authorization头信息同时验证token
- 应该允许开发者决定在Redis中存储哪些用户信息
- 应该能够根据配置激活或停用Redis
- 如果收到有效的JWT请求但用户不在Redis中,则应该使用JWT重新创建缓存,并在创建缓存之前在数据库中检查用户是否存在一次
- 应该更新与Ban状态相关的架构,并检查 banned_statuses 操作
- 应该合并配置信息,以便在没有发布之前可以工作
- 应该为2FA情况创建事件
- 应该更改所有事件架构
- 应该在用户未登录时生成token
许可证
MIT © Şakir Mehmetoğlu