apeblog/app/common/utils/Jwt.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;
}
}
}