Download the PHP package yzh52521/think-jwt without Composer
On this page you can find all versions of the php package yzh52521/think-jwt. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download yzh52521/think-jwt
More information about yzh52521/think-jwt
Files in yzh52521/think-jwt
Package think-jwt
Short Description JSON Web Token (JWT) for Thinkphp plugin
License MIT
Homepage https://github.com/yzh52521/think-jwt
Informations about the package think-jwt
说明:
think-jwt
支持多应用单点登录、多应用多点登录、多应用支持注销 token(token会失效)、支持多应用刷新 token多应用单点登录:在该应用配置下只会有一个 token 生效,一旦刷新 token ,前面生成的 token 都会失效,一般以用户 id 来做区分
多应用多点登录:在该配置应用下token 不做限制,一旦刷新 token ,则当前配置应用的 token 会失效
注意:使用多应用单点登录或者多应用多点登录时,必须要开启黑名单,并且使用
thinkphp
的缓存(建议使用redis
缓存) 。如果不开启黑名单,无法使 token 失效,生成的 token 会在有效时间内都可以使用(未更换证书或者 secret )。多应用单点登录原理:
JWT
有七个默认字段供选择。单点登录主要用到 jti 默认字段,jti
字段的值默认为缓存到redis中的key( 该key的生成为场景值+存储的用户id(sso_key
)) ,这个key的值会存一个签发时间,token检测会根据这个时间来跟token原有的签发时间对比,如果token原有时间小于等于redis存的时间,则认为无效多应用多点登录原理:多点登录跟单点登录差不多,唯一不同的是jti的值不是场景值+用户id(
sso_key
) ,而是一个唯一字符串,每次调用refreshToken
来刷新token
或者调用logout
注销 token 会默认把请求头中的 token 加入到黑名单,而不会影响到别的 tokentoken 不做限制原理:token 不做限制,在 token 有效的时间内都能使用,你只要把配置文件中的
blacklist_enabled
设置为false
即可,即为关闭黑名单功能
使用:
jwt配置
全局路由验证 app/middleware.php
局部验证
在 route/app.php
文件中,想要验证的路由加入 jwt
验证中间件即可,例如:
7、模拟登录获取token,具体情况下面的例子文件
路由
鉴权
在需要鉴权的接口,请求该接口时在 HTTP
头部加入
结果
请求:/login,下面是返回的结果
请求:/v1/getToken
10、例子文件
user_model 用户模型
获取解析后的 token 数据
提供了一个 getParserData
来获取解析后的 token 数据。
例如:JWTUtil::getParserData($this->request)
如何支持每个场景生成的token不能互相访问各个应用
具体你可以查看 yzh52521\Jwt\Middleware\JWTAuthSceneDefaultMiddleware yzh52521\Jwt\Middleware\JWTAuthSceneAppMiddleware 这两个中间件,根据这两个中间件你可以编写自己的中间件来支持每个场景生成的token不能互相访问各个应用
建议
目前
jwt
抛出的异常目前有两种类型yzh52521\Jwt\Exception\TokenValidException
、
yzh52521\Jwt\Exception\JWTException
异常为TokenValidException
验证失败的异常,会抛出401
,
JWTException
异常会抛出400
,
最好你们自己在项目异常重新返回错误信息
All versions of think-jwt with dependencies
lcobucci/jwt Version ^4.2.1 || ^5.0
lcobucci/clock Version ^3.0
nesbot/carbon Version ^2.0