新建lib目录,在lib目录中创建Token控制器
namespace app\lib;
use Firebase\JWT\ExpiredException;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use think\Exception;
class Token
{
/**
* 生成token
* @param string userId = '')
{
// 签发密钥
$key = md5('字符串加密');
// 签发时间
$time = time();
// 过期时间
$expire = $time + 14400;
$token = [
'user_id' => $userId,
'iss' => '域名',
'and' => '字符串加密',
'nbf' => $time,
'iat' => $time,
'exp' => $expire
];
$jwt = JWT::encode($token,$key,'HS256');
return $jwt;
}
/**
* 验证token
* @param string $jwt
* @return mixed
* @throws Exception
*/
static public function verifyJwt($jwt = '')
{
// 签发密钥
$key = md5('字符串加密');
try {
$jwtAuth = json_encode(JWT::decode($jwt,new Key($key,'HS256')));
$authInfo = json_decode($jwtAuth,true);
if (empty($authInfo['user_id'])) {
throw new Exception('token验证不通过,用户不存在');
}
return $authInfo['user_id'];
} catch (\Firebase\JWT\ExpiredException $e) {
throw new Exception('token过期');
} catch (\Exception $e) {
throw new Exception('token无效');
}
}
}