thinkphp如何使用jwt
2023-03-29 23:03:03
320
{{single.collect_count}}

首先安装JWT

composer require firebase/php-jwt

生成token

数据准备准备一个需要的用户信息 $account = ['id' => 'root', 'password' => 123456];准备一个$payload $payload=["userinfo"=>$account,"exp"=>time()+3600*24//过期时间];不限于以下iss:发行人exp:到期时间sub:主题aud:用户nbf:在此之前不可用iat:发布时间jti:JWT ID用于标识该JWT使用JWT::encode方法加密第一个参数是 我们准备的数据第二个参数是 我们自己知道但是不能泄露的加密的盐第三个参数是 加密方式要与解密保持一致$token = JWT::encode($payload, $saline, 'HS256');会返回一个token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyaW5mbyI6eyJpZCI6InJvb3QiLCJwYXNzd29yZCI6MTIzNDU2fSwiZXhwIjoxNjQ0NDczMDc3fQ.04M_baRDceG-kL5hjuA6CPpJDuac71OewOjidjEwW8Y 以AA.BB.YY格式其中BB段为使用base64编码的$payload,是可逆的 

使用token返回信息(解码)

使用JWT::decode进行解码第一个参数是我们刚才生成的token第二个参数是一个Key对象 可由use Firebase\JWT\Key; 实例化一个key过程中传入与encode 过程中相同的盐和加密方式作为参数$decode = JWT::decode($token, new Key($saline, 'HS256'));$decode返回stdClass Object ( [userinfo] => stdClass Object ( [id] => root [password] => 123456 ) [exp] => 1644473077 )
回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}