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