thinkphp6 token验证

第一步:

composer require firebase/php-jwt

 

第二步

<?php
namespace app\controller;
use Firebase\JWT\ExpiredException;
use Firebase\JWT\JWT as JWTUtil;
use think\Exception;

class JWT
{
/**
* 根据json web token设置的规则生成token
* @return \think\response\Json
*/
static public function createjwt()
{
$key = md5('dd'); //jwt的签发密钥,验证token的时候需要用到
$time = time(); //签发时间
$expire = $time + 14400; //过期时间
$token = array(
"user_id" => 1,
"iss" => "http://www.najingquan.com/",//签发组织
"aud" => "zz", //签发作者
"iat" => $time,
"nbf" => $time,
"exp" => $expire
);
return JWTUtil::encode($token,$key);
}

/**
* 验证token
* @return \think\response\Json
*/
static public function verifyjwt()
{
$jwt= input("jwt");
$key = md5('dd'); //jwt的签发密钥,验证token的时候需要用到
try {
$jwtAuth = json_encode(JWTUtil::decode($jwt, $key, array("HS256")));
$authInfo = json_decode($jwtAuth, true);
if (!$authInfo['user_id']) {
return json([
'msg'=>'失败',
'code'=>'600',
'data'=>'',
]);
}
return json([
'msg'=>'OK',
'code'=>'200',
'data'=>'',
]);
} catch (ExpiredException $e) {
throw new Exception('token过期');
} catch (\Exception $e) {
throw new Exception($e->getMessage());
}
}
public static function getRequestToken()
{
if (empty($_SERVER['HTTP_AUTHORIZATION']))
{
return false;
}
$header = $_SERVER['HTTP_AUTHORIZATION'];
$method = 'bearer';
//去除token中可能存在的bearer标识
return trim(str_ireplace($method,'',$header));
}

}

 

posted on 2021-12-29 20:32  少雄3306  阅读(883)  评论(0)    收藏  举报