zhangl 3 месяцев назад
Родитель
Сommit
48156b63ea

+ 4 - 4
common/config/main.php

@@ -48,10 +48,10 @@ return [
             //     'database' => 0,
             // ]
         ],
-        'tokenRedis' => array_merge(['class' => 'yii\redis\Connection'], $mainConfig['tokenRedis']),
-        'redis' => array_merge(['class' => 'yii\redis\Connection'], $mainConfig['otherRedis']),
-        // 'tokenRedis' => array_merge(['class' => 'common\components\Redis'], $mainConfig['tokenRedis']),
-        // 'redis' => array_merge(['class' => 'common\components\Redis'], $mainConfig['otherRedis']),
+        // 'tokenRedis' => array_merge(['class' => 'yii\redis\Connection'], $mainConfig['tokenRedis']),
+        // 'redis' => array_merge(['class' => 'yii\redis\Connection'], $mainConfig['otherRedis']),
+        'tokenRedis' => array_merge(['class' => 'common\components\Redis'], $mainConfig['tokenRedis']),
+        'redis' => array_merge(['class' => 'common\components\Redis'], $mainConfig['otherRedis']),
         'mailer' => [
             'class' => 'yii\swiftmailer\Mailer',
             'viewPath' => '@common/mail',

+ 22 - 11
frontendApi/modules/v1/components/BrandAuth.php

@@ -103,10 +103,12 @@ class BrandAuth extends User {
         $class = $this->identityClass;
         $userId = $this->_userId = $class::findIdentityByAccessToken($token, $type);
         if ($userId) {
+            // 使用Redis::key方法加密token
+            $redisKey = Redis::key($token);
             $this->_userInfo = [
                 'id' => $userId,
-                'userName' => Yii::$app->tokenRedis->hget($token, 'USER_NAME'),
-                'accessTokenUpdatedAt' => Yii::$app->tokenRedis->hget($token, 'TOKEN_UPDATED_AT'),
+                'userName' => Yii::$app->tokenRedis->hget($redisKey, 'USER_NAME'),
+                'accessTokenUpdatedAt' => Yii::$app->tokenRedis->hget($redisKey, 'TOKEN_UPDATED_AT'),
                 'ip' => Yii::$app->getRequest()->getUserIP(),
             ];
             return $userId;
@@ -155,7 +157,9 @@ class BrandAuth extends User {
         if (!$refreshToken) {
             return false;
         }
-        $userId = Yii::$app->tokenRedis->hget($refreshToken, 'ID');
+        // 使用Redis::key方法加密token
+        $redisKey = Redis::key($refreshToken);
+        $userId = Yii::$app->tokenRedis->hget($redisKey, 'ID');
         if (!$userId) {
             return false;
         }
@@ -175,7 +179,9 @@ class BrandAuth extends User {
         if (!$refreshToken) {
             return false;
         }
-        $userId = Yii::$app->tokenRedis->hget($refreshToken, 'ID');
+        // 使用Redis::key方法加密token
+        $redisKey = Redis::key($refreshToken);
+        $userId = Yii::$app->tokenRedis->hget($redisKey, 'ID');
         if (!$userId) {
             return false;
         }
@@ -193,7 +199,9 @@ class BrandAuth extends User {
         if (!$refreshToken) {
             return false;
         }
-        $userId = Yii::$app->tokenRedis->hget($refreshToken, 'ID');
+        // 使用Redis::key方法加密token
+        $redisKey = Redis::key($refreshToken);
+        $userId = Yii::$app->tokenRedis->hget($redisKey, 'ID');
         if (!$userId) {
             return false;
         }
@@ -249,7 +257,9 @@ class BrandAuth extends User {
             throw new HttpException(500, 'token更新失败', 500);
         }
         // 查找TOKEN中是否有同一用户产生的垃圾token,有的话就清除
-        Yii::$app->tokenRedis->del($oldToken);
+        if ($oldToken) {
+            Yii::$app->tokenRedis->del(Redis::key($oldToken));
+        }
 
         $identity = $this->_apiIdentity;
         if (!$this->_apiIdentity) {
@@ -258,11 +268,12 @@ class BrandAuth extends User {
             }
             $identity = $identityClass::findIdentity($userId);
         }
-        // 把 accessToken 当做key存入redis中内容为会员的ID和用户名
-        Yii::$app->tokenRedis->hset($token, 'ID', $identity['ID']);
-        Yii::$app->tokenRedis->hset($token, 'USER_NAME', $identity['USER_NAME']);
-        Yii::$app->tokenRedis->hset($token, 'TOKEN_UPDATED_AT', $userTokenModel->$updateField);
-        Yii::$app->tokenRedis->expire($token, $expiresIn);
+        // 把 accessToken 当做key存入redis中内容为会员的ID和用户名,使用Redis::key方法加密
+        $redisKey = Redis::key($token);
+        Yii::$app->tokenRedis->hset($redisKey, 'ID', $identity['ID']);
+        Yii::$app->tokenRedis->hset($redisKey, 'USER_NAME', $identity['USER_NAME']);
+        Yii::$app->tokenRedis->hset($redisKey, 'TOKEN_UPDATED_AT', $userTokenModel->$updateField);
+        Yii::$app->tokenRedis->expire($redisKey, $expiresIn);
 
         // 标记为快速登录的会员
         if (self::$_isQuicklyLogin) {

+ 22 - 11
frontendApi/modules/v1/components/UserAuth.php

@@ -106,10 +106,12 @@ class UserAuth extends User {
         $class = $this->identityClass;
         $userId = $this->_userId = $class::findIdentityByAccessToken($token, $type);
         if ($userId) {
+            // 使用Redis::key方法加密token
+            $redisKey = Redis::key($token);
             $this->_userInfo = [
                 'id' => $userId,
-                'userName' => Yii::$app->tokenRedis->hget($token, 'USER_NAME'),
-                'accessTokenUpdatedAt' => Yii::$app->tokenRedis->hget($token, 'TOKEN_UPDATED_AT'),
+                'userName' => Yii::$app->tokenRedis->hget($redisKey, 'USER_NAME'),
+                'accessTokenUpdatedAt' => Yii::$app->tokenRedis->hget($redisKey, 'TOKEN_UPDATED_AT'),
                 'ip' => Yii::$app->getRequest()->getUserIP(),
             ];
             return $userId;
@@ -158,7 +160,9 @@ class UserAuth extends User {
         if (!$refreshToken) {
             return false;
         }
-        $userId = Yii::$app->tokenRedis->hget($refreshToken, 'ID');
+        // 使用Redis::key方法加密token
+        $redisKey = Redis::key($refreshToken);
+        $userId = Yii::$app->tokenRedis->hget($redisKey, 'ID');
         if (!$userId) {
             return false;
         }
@@ -178,7 +182,9 @@ class UserAuth extends User {
         if (!$refreshToken) {
             return false;
         }
-        $userId = Yii::$app->tokenRedis->hget($refreshToken, 'ID');
+        // 使用Redis::key方法加密token
+        $redisKey = Redis::key($refreshToken);
+        $userId = Yii::$app->tokenRedis->hget($redisKey, 'ID');
         if (!$userId) {
             return false;
         }
@@ -196,7 +202,9 @@ class UserAuth extends User {
         if (!$refreshToken) {
             return false;
         }
-        $userId = Yii::$app->tokenRedis->hget($refreshToken, 'ID');
+        // 使用Redis::key方法加密token
+        $redisKey = Redis::key($refreshToken);
+        $userId = Yii::$app->tokenRedis->hget($redisKey, 'ID');
         if (!$userId) {
             return false;
         }
@@ -252,7 +260,9 @@ class UserAuth extends User {
             throw new HttpException(500, 'token更新失败', 500);
         }
         // 查找TOKEN中是否有同一用户产生的垃圾token,有的话就清除
-        Yii::$app->tokenRedis->del($oldToken);
+        if ($oldToken) {
+            Yii::$app->tokenRedis->del(Redis::key($oldToken));
+        }
 
         $identity = $this->_apiIdentity;
         if (!$this->_apiIdentity) {
@@ -261,11 +271,12 @@ class UserAuth extends User {
             }
             $identity = $identityClass::findIdentity($userId);
         }
-        // 把 accessToken 当做key存入redis中内容为会员的ID和用户名
-        Yii::$app->tokenRedis->hset($token, 'ID', $identity['ID']);
-        Yii::$app->tokenRedis->hset($token, 'USER_NAME', $identity['USER_NAME']);
-        Yii::$app->tokenRedis->hset($token, 'TOKEN_UPDATED_AT', $userTokenModel->$updateField);
-        Yii::$app->tokenRedis->expire($token, $expiresIn);
+        // 把 accessToken 当做key存入redis中内容为会员的ID和用户名,使用Redis::key方法加密
+        $redisKey = Redis::key($token);
+        Yii::$app->tokenRedis->hset($redisKey, 'ID', $identity['ID']);
+        Yii::$app->tokenRedis->hset($redisKey, 'USER_NAME', $identity['USER_NAME']);
+        Yii::$app->tokenRedis->hset($redisKey, 'TOKEN_UPDATED_AT', $userTokenModel->$updateField);
+        Yii::$app->tokenRedis->expire($redisKey, $expiresIn);
 
         // 标记为快速登录的会员
         if (self::$_isQuicklyLogin) {

+ 9 - 5
frontendApi/modules/v1/models/LoginForm.php

@@ -94,7 +94,8 @@ class LoginForm extends Model
         $transaction->commit();
 
         $cacheKey = sprintf(self::FRONTEND_LOGIN_FAIL_TIMES, $this->userName);
-        Yii::$app->tokenRedis->incr($cacheKey);
+        $redisKey = Redis::key($cacheKey);
+        Yii::$app->tokenRedis->incr($redisKey);
 
         if(isset($this->_user)){
             UserLoginLogger::fail($this->_userInfo,$returnResult);
@@ -106,7 +107,8 @@ class LoginForm extends Model
      */
     private function _updateSuccessTimes(){
         $cacheKey = sprintf(self::FRONTEND_LOGIN_FAIL_TIMES, $this->userName);
-        Yii::$app->tokenRedis->del($cacheKey);
+        $redisKey = Redis::key($cacheKey);
+        Yii::$app->tokenRedis->del($redisKey);
 
         $userInfo = UserInfo::findOneAsArray('USER_NAME=:USER_NAME', ['USER_NAME' => $this->userName]);
         if ($userInfo['FAIL_NUMS'] > 0) {
@@ -195,8 +197,9 @@ class LoginForm extends Model
 
             UserLoginLogger::success($this->_userInfo, $this->version);
 
-            // 把用户的登录时间存在操作时间里
-            Yii::$app->tokenRedis->hset('user:timeOut', $this->_userInfo['USER_ID'], time());
+            // 把用户的登录时间存在操作时间里,使用Redis::key方法加密
+            $redisKey = Redis::key('user:timeOut');
+            Yii::$app->tokenRedis->hset($redisKey, $this->_userInfo['USER_ID'], time());
 
 //            if (!$this->_whetherBA) {
                 return Yii::$app->user->loginWithUAndP($this->_user);
@@ -235,7 +238,8 @@ class LoginForm extends Model
      */
     public function isLoginVerify() {
         $cacheKey = sprintf(self::FRONTEND_LOGIN_FAIL_TIMES, $this->userName);
-        $times = Yii::$app->tokenRedis->get($cacheKey);
+        $redisKey = Redis::key($cacheKey);
+        $times = Yii::$app->tokenRedis->get($redisKey);
         return $times && $times >= 3;
     }
 }

+ 4 - 3
frontendApi/modules/v1/models/User.php

@@ -23,13 +23,14 @@ class User extends \common\models\User implements IdentityInterface {
      * @return null|IdentityInterface|static
      */
     public static function findIdentityByAccessToken($token, $type = null) {
-        // 从redis中把 token 找到
-        return Yii::$app->tokenRedis->hget($token, 'ID');
+        // 从redis中把 token 找到,使用Redis::key方法加密
+        $redisKey = Redis::key($token);
+        return Yii::$app->tokenRedis->hget($redisKey, 'ID');
 //        if($userId){
 //            return static::findOne(['ID' => $userId]);
 //        }
 //        return null;
-    }
+32|     }
 
     public function fields() {
         $fields = parent::fields();

+ 4 - 3
frontendApi/modules/v1/models/brand/User.php

@@ -24,13 +24,14 @@ class User extends BaUser implements IdentityInterface {
      * @return null|IdentityInterface|static
      */
     public static function findIdentityByAccessToken($token, $type = null) {
-        // 从redis中把 token 找到
-        return Yii::$app->tokenRedis->hget($token, 'ID');
+        // 从redis中把 token 找到,使用Redis::key方法加密
+        $redisKey = Redis::key($token);
+        return Yii::$app->tokenRedis->hget($redisKey, 'ID');
 //        if($userId){
 //            return static::findOne(['ID' => $userId]);
 //        }
 //        return null;
-    }
+33|     }
 
     public function fields() {
         $fields = parent::fields();