thinkphp如何使用jwt

首先安装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 )




你可能感兴趣的:(php,安全,web安全)