Просмотр исходного кода

提交超时的测试,改成所有用户使用一个redis的key

frank 3 лет назад
Родитель
Сommit
e93531b000

+ 5 - 4
backendApi/modules/v1/controllers/BaseController.php

@@ -41,12 +41,13 @@ class BaseController extends \yii\rest\ActiveController {
         // 增加的判断用户登录后未操作后的超时
         if (Yii::$app->getUser()->getUserInfo()){
             $adminId = Yii::$app->getUser()->getUserInfo()['id'];
-            $redisAdminKey = 'timeout-admin-'.$adminId;
+            $redisKey = 'admin-timeOut';
+
             $lastTime = '';
-            if (!Yii::$app->tokenRedis->hget($redisAdminKey, 'lastTime')) {
+            if (!Yii::$app->tokenRedis->hget($redisKey, $adminId)) {
                 $lastTime = time();
             }else{
-                $lastTime = Yii::$app->tokenRedis->hget($redisAdminKey, 'lastTime');
+                $lastTime = Yii::$app->tokenRedis->hget($redisKey, $adminId);
             }
 
             $currentTime = time();
@@ -54,7 +55,7 @@ class BaseController extends \yii\rest\ActiveController {
             if ($currentTime - $lastTime > $timeOut) {
                 return self::notice('Connection not operated for too long', 402);
             } else {
-                Yii::$app->tokenRedis->hset($redisAdminKey, 'lastTime', time());
+                Yii::$app->tokenRedis->hset($redisKey, $adminId, time());
             }
         }
 

+ 2 - 5
backendApi/modules/v1/models/LoginForm.php

@@ -138,11 +138,8 @@ class LoginForm extends Model {
             $transaction->commit();
             AdminLoginLogger::success($this->_user);
 
-            // 新需求添加的删除用户token , 重新统计
-            $redisKey = 'timeout-admin-'.$this->_user->getId();
-            if (Yii::$app->tokenRedis->exists($redisKey)){
-                Yii::$app->tokenRedis->del($redisKey);
-            }
+            // 把用户的登录时间存在操作时间里
+            Yii::$app->tokenRedis->hset('admin-timeOut', $this->_user->getId(), time());
 
             return Yii::$app->user->loginWithUAndP($this->_user);
         }catch(\Exception $e){

+ 1 - 1
common/config/params.php

@@ -9,7 +9,7 @@ return [
     'frontAccessTokenExpiresIn' => 3000 * 60,
     'frontRefreshTokenExpiresIn' => 3000 * 60 * 60,
     'user.passwordResetTokenExpire' => 3600,
-    'operationTimeOut' => 15 * 60,     // 这里设置的15分钟超时
+    'operationTimeOut' => 1 * 60,     // 这里设置的15分钟超时
     'pageSize' => 20,
     'http' => [
         'shopApi' => [

+ 5 - 4
frontendApi/modules/v1/controllers/BaseController.php

@@ -50,12 +50,13 @@ class BaseController extends \yii\rest\ActiveController {
         // 增加的判断用户登录后未操作后的超时
         if (Yii::$app->getUser()->getUserInfo()){
             $userId = Yii::$app->getUser()->getUserInfo()['id'];
-            $redisUserKey = 'timeout-user-'.$userId;
+            $redisKey = 'user-timeOut';
+
             $lastTime = '';
-            if (!Yii::$app->tokenRedis->hget($redisUserKey, 'lastTime')) {
+            if (!Yii::$app->tokenRedis->hget($redisKey, $userId)) {
                 $lastTime = time();
             }else{
-                $lastTime = Yii::$app->tokenRedis->hget($redisUserKey, 'lastTime');
+                $lastTime = Yii::$app->tokenRedis->hget($redisKey, $userId);
             }
 
             $currentTime = time();
@@ -63,7 +64,7 @@ class BaseController extends \yii\rest\ActiveController {
             if ($currentTime - $lastTime > $timeOut) {
                 return self::notice('Connection not operated for too long', 402);
             } else {
-                Yii::$app->tokenRedis->hset($redisUserKey, 'lastTime', time());
+                Yii::$app->tokenRedis->hset($redisKey, $userId, time());
             }
         }
 

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

@@ -170,11 +170,8 @@ class LoginForm extends Model
 
             UserLoginLogger::success($this->_userInfo);
 
-            // 新需求添加的删除用户token , 重新统计
-            $redisKey = 'timeout-user-'.$this->_userInfo['USER_ID'];
-            if (Yii::$app->tokenRedis->exists($redisKey)){
-                Yii::$app->tokenRedis->del($redisKey);
-            }
+            // 把用户的登录时间存在操作时间里
+            Yii::$app->tokenRedis->hset('user-timeOut', $this->_userInfo['USER_ID'], time());
 
             return Yii::$app->user->loginWithUAndP($this->_user);
         }catch(\Exception $e){