|
|
@@ -16,16 +16,16 @@ use Yii;
|
|
|
|
|
|
class jwt
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
//生成token
|
|
|
- public static function create($platId, $userId)
|
|
|
+ public static function create($sourceId, $userId)
|
|
|
{
|
|
|
$time = time();
|
|
|
$signer = new Sha256();
|
|
|
$salt = Yii::$app->params['secretKey'];
|
|
|
$key = new Key($salt);
|
|
|
$host = httpUtil::getHost();
|
|
|
- $uniqueId = $platId . '_' . $userId;
|
|
|
+ $uniqueId = $sourceId . '_' . $userId;
|
|
|
$token = (new Builder())->issuedBy($host)//发布者的url地址
|
|
|
->canOnlyBeUsedBy($host)//接受者的url地址
|
|
|
->identifiedBy($uniqueId, true)//该jwt的唯一ID编号
|
|
|
@@ -35,36 +35,36 @@ class jwt
|
|
|
->set('userId', $userId)//设置一个变量
|
|
|
->sign($signer, $key)->getToken();
|
|
|
|
|
|
- $keyName = self::getKeyName($platId,$userId);
|
|
|
- Yii::$app->redis->executeCommand('SET', [$keyName,$token]);
|
|
|
+ $keyName = self::getKeyName($sourceId, $userId);
|
|
|
+ Yii::$app->redis->executeCommand('SET', [$keyName, $token]);
|
|
|
|
|
|
return $token;
|
|
|
}
|
|
|
-
|
|
|
- public static function getKeyName($platId,$userId)
|
|
|
+
|
|
|
+ public static function getKeyName($sourceId, $userId)
|
|
|
{
|
|
|
- return 'JWT_'.$platId.'_'.$userId;
|
|
|
+ return 'JWT_' . $sourceId . '_' . $userId;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//返回一个可用的token shish 2019.11.22
|
|
|
- public static function get($platId, $userId)
|
|
|
+ public static function get($sourceId, $userId)
|
|
|
{
|
|
|
- $keyName = self::getKeyName($platId,$userId);
|
|
|
+ $keyName = self::getKeyName($sourceId, $userId);
|
|
|
$cacheToken = Yii::$app->redis->executeCommand('GET', [$keyName]);
|
|
|
$token = '';
|
|
|
//从缓存中获取
|
|
|
- if(!empty($cacheToken)){
|
|
|
+ if (!empty($cacheToken)) {
|
|
|
$tokenResource = (new Parser())->parse((string)$cacheToken);
|
|
|
$data = new ValidationData();
|
|
|
$r = $tokenResource->validate($data);
|
|
|
$token = $r == false ? '' : $cacheToken;
|
|
|
}
|
|
|
- if(empty($token)){
|
|
|
- $token = self::create($platId,$userId);
|
|
|
+ if (empty($token)) {
|
|
|
+ $token = self::create($sourceId, $userId);
|
|
|
}
|
|
|
return $token;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//验证token
|
|
|
public static function validate($token)
|
|
|
{
|
|
|
@@ -72,18 +72,18 @@ class jwt
|
|
|
//数据校验
|
|
|
$data = new ValidationData(); // 使用当前时间来校验数据
|
|
|
if (!$token->validate($data)) {
|
|
|
- return ['code'=>1];
|
|
|
+ return ['code' => 1];
|
|
|
}
|
|
|
//token校验
|
|
|
$signer = new Sha256();//生成JWT时使用的加密方式
|
|
|
$salt = Yii::$app->params['secretKey'];
|
|
|
if (!$token->verify($signer, new Key($salt))) {
|
|
|
- return ['code'=>1];
|
|
|
+ return ['code' => 1];
|
|
|
}
|
|
|
$token->getHeaders(); // 获取JWT的Header(头部)信息
|
|
|
$token->getClaims(); // 获取JWT的PayLoad(负载)信息
|
|
|
$userId = $token->getClaim('userId');
|
|
|
- return ['code'=>0,'data'=>['userId'=>$userId]];
|
|
|
+ return ['code' => 0, 'data' => ['userId' => $userId]];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|