mirror of https://github.com/1099438829/apeblog
58 lines
1.5 KiB
PHP
58 lines
1.5 KiB
PHP
<?php
|
|
|
|
|
|
namespace app\common\utils;
|
|
|
|
use Firebase\JWT\JWT as jt;
|
|
/**
|
|
* Class Jwt
|
|
* @package app\common\utils
|
|
*/
|
|
class Jwt
|
|
{
|
|
/**
|
|
* 生成 toekn
|
|
* @param array $param
|
|
* @return string
|
|
*/
|
|
public static function signToken(array $param):string
|
|
{
|
|
$salt = '!@$@#%^%&^%*'.app()->request->ip().app()->request->domain();
|
|
$token = array(
|
|
"iss"=> $salt,
|
|
"aud"=> $salt,
|
|
"iat"=> time(),
|
|
"nbf"=> time(),
|
|
"exp"=> time()+60*60*24,
|
|
"data"=> $param
|
|
);
|
|
return "Bearer ".jt::encode($token, $salt, "HS256");
|
|
}
|
|
|
|
/**
|
|
* 解析token
|
|
* @param string $token
|
|
* @return array
|
|
*/
|
|
public static function checkToken(string $token)
|
|
{
|
|
$salt = '!@$@#%^%&^%*'.app()->request->ip().app()->request->domain();
|
|
try {
|
|
$data = jt::decode(trim(ltrim($token, 'Bearer')), $salt, ["HS256"]);
|
|
$data = (array)$data;
|
|
return (array)$data['data'];
|
|
}catch(\Firebase\JWT\SignatureInvalidException $e) {
|
|
$status['msg']="签名不正确";
|
|
return $status;
|
|
}catch(\Firebase\JWT\BeforeValidException $e) {
|
|
$status['msg']="token失效";
|
|
return $status;
|
|
}catch(\Firebase\JWT\ExpiredException $e) {
|
|
$status['msg']="token失效";
|
|
return $status;
|
|
}catch(\Exception $e) {
|
|
$status['msg'] = "未知错误";
|
|
return $status;
|
|
}
|
|
}
|
|
} |