jwt介绍和PHP的使用
适用于分布式单点登录(SSO)
流程
客户端输入账号密码登录;
服务端判断登录信息,用户登录成功返回客户端token;
客户端存储token,每个请求都需要传递token到服务端;
服务端验证token的有效期,返回对应的信息;
构成
分为三部分
头部(header);2、载荷(payload, 数据信息);3、签证(signature).;
使用
生成token
$header = ['typ' => 'JWT', 'alg' => 'HS256'];//头部
$jwt_header = base64_encode(json_encode($header));
$time = time()+3600;//过期时间
$payload = ['username' => '张三', 'id' => '123', 'sub' => $time];//载荷
$jwt_payload = base64_encode(json_encode($payload));
$secret = 'abcdef';//设置的密钥
$jwt_sign = md5($jwt_header.$jwt_payload.$secret);
$token = $jwt_header.".".$jwt_payload.".".$jwt_sign;
验证token
$token_arr = explode('.',$token);
if(count($token_arr) != 3){
die('长度不对快跑');
}
$jwt_header = json_decode(base64_decode($token_arr[0]), true);
if($jwt_header['typ'] != 'JWT'){
die('数据不对快跑');
}
$jwt_payload = json_decode(base64_decode($token_arr[1]), true);
if($jwt_payload['sub'] < time()){
die('过期快跑');
}
$secret = 'abcdef';//设置的密钥
$jwt_sign = md5($token_arr[0].$token_arr[1].$secret);
if($token_arr[2] != $jwt_sign){
die('加密不对快跑');
}
来源地址:https://blog.csdn.net/shaoyangzhuanyong/article/details/127490658
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341