deason 6 anni fa
parent
commit
04b2c55c17

+ 2 - 7
src/main/java/cn/com/qmth/examcloud/app/controller/version1/UserAuthRestController.java

@@ -7,7 +7,6 @@
 
 package cn.com.qmth.examcloud.app.controller.version1;
 
-import cn.com.qmth.examcloud.app.core.utils.StrUtils;
 import cn.com.qmth.examcloud.app.model.LoginInfo;
 import cn.com.qmth.examcloud.app.model.Result;
 import cn.com.qmth.examcloud.app.model.UserInfo;
@@ -48,12 +47,8 @@ public class UserAuthRestController {
             UserInfo userInfo = result.getData();
             loginInfo.setKey(userInfo.getKey());
             loginInfo.setToken(userInfo.getToken());
-            String redisKey = StrUtils.md5Key(userInfo.getKey());
-            userAuthService.cacheLoginInfo(loginInfo, redisKey);
-            log.info(String.format("redisKey:%s key:%s token:%s", redisKey, userInfo.getKey(), userInfo.getToken()));
-
-            //替换login token为缓存的redisKey并返回
-            userInfo.setToken(redisKey);
+            userAuthService.cacheLoginInfo(loginInfo, userInfo.getKey());
+            log.info(String.format("key:%s token:%s", userInfo.getKey(), userInfo.getToken()));
         }
         return result;
     }

+ 10 - 11
src/main/java/cn/com/qmth/examcloud/app/core/config/TokenFilter.java

@@ -70,15 +70,14 @@ public class TokenFilter implements Filter {
     }
 
     private CustomHttpServletRequest initCustomRequest(HttpServletRequest request, String deviceId) {
-        //用户带的token实际为缓存的redisKey
-        String redisKey = request.getHeader(Constants.PARAM_TOKEN);
-        if (StringUtils.isBlank(redisKey)) {
-            //token为空,则不用过滤处理
+        String key = request.getHeader(Constants.PARAM_KEY);
+        if (StringUtils.isBlank(key)) {
+            //key为空,则不用过滤处理
             return null;
         }
 
-        //通过redisKey获取原始的登录信息
-        LoginInfo loginInfo = userAuthService.getLoginInfo(redisKey);
+        //通过key获取原始的登录信息
+        LoginInfo loginInfo = userAuthService.getLoginInfo(key);
         if (loginInfo == null) {
             //loginInfo为空,则代表尚未登录不用处理
             return null;
@@ -92,7 +91,7 @@ public class TokenFilter implements Filter {
                 //设备编号相同
                 if (loginInfo.hasExpired(PLATFORM_SESSION_EXPIRE_TIME)) {
                     //判断原始的login token是否在有效时间内,若已超过有效时间,则自动登录续期
-                    this.reLogin(loginInfo, redisKey);
+                    this.reLogin(loginInfo);
                 }
             } else {
                 //设备编号不同且Token在有效时间内,则互踢
@@ -100,7 +99,7 @@ public class TokenFilter implements Filter {
                     return null;
                 }
                 loginInfo.setDeviceId(deviceId);
-                this.reLogin(loginInfo, redisKey);
+                this.reLogin(loginInfo);
             }
         }
 
@@ -112,7 +111,7 @@ public class TokenFilter implements Filter {
         return customRequest;
     }
 
-    private void reLogin(LoginInfo loginInfo, String redisKey) {
+    private void reLogin(LoginInfo loginInfo) {
         try {
             Result<UserInfo> result = userAuthService.login(loginInfo);
             UserInfo userInfo = result.getData();
@@ -120,10 +119,10 @@ public class TokenFilter implements Filter {
                 return;
             }
             //登录成功后缓存新的Token信息
-            log.info(String.format("redisKey:%s key:%s newToken:%s", redisKey, userInfo.getKey(), userInfo.getToken()));
+            log.info(String.format("key:%s newToken:%s", userInfo.getKey(), userInfo.getToken()));
             loginInfo.setToken(userInfo.getToken());
             loginInfo.setCreateTime(new Date());
-            userAuthService.cacheLoginInfo(loginInfo, redisKey);
+            userAuthService.cacheLoginInfo(loginInfo, userInfo.getKey());
         } catch (Exception e) {
             log.error(e.getMessage());
         }

+ 17 - 15
src/main/java/cn/com/qmth/examcloud/app/service/impl/UserAuthServiceImpl.java

@@ -8,7 +8,10 @@
 package cn.com.qmth.examcloud.app.service.impl;
 
 import cn.com.qmth.examcloud.app.core.exception.ApiException;
-import cn.com.qmth.examcloud.app.core.utils.*;
+import cn.com.qmth.examcloud.app.core.utils.HttpClientBuilder;
+import cn.com.qmth.examcloud.app.core.utils.HttpUtils;
+import cn.com.qmth.examcloud.app.core.utils.JsonMapper;
+import cn.com.qmth.examcloud.app.core.utils.ThreadUtils;
 import cn.com.qmth.examcloud.app.model.*;
 import cn.com.qmth.examcloud.app.service.PropertyService;
 import cn.com.qmth.examcloud.app.service.RedisService;
@@ -86,8 +89,7 @@ public class UserAuthServiceImpl implements UserAuthService {
                 .add(PARAM_TOKEN, token)
                 .build();
         //清除缓存用户登录信息
-        String redisKey = StrUtils.md5Key(key);
-        this.removeCacheLoginInfo(redisKey);
+        this.removeCacheLoginInfo(key);
         //退出登录
         return HttpUtils.doPost(requestUrl, formBody, key, token);
     }
@@ -141,33 +143,33 @@ public class UserAuthServiceImpl implements UserAuthService {
      * 缓存用户登录信息
      */
     @Override
-    public void cacheLoginInfo(LoginInfo loginInfo, String redisKey) {
-        if (StringUtils.isEmpty(redisKey)) {
-            throw new ApiException("Key must be not empty.");
+    public void cacheLoginInfo(LoginInfo loginInfo, String key) {
+        if (StringUtils.isEmpty(key)) {
+            throw new ApiException("key must be not empty.");
         }
         String jsonStr = new JsonMapper().toJson(loginInfo);
-        redisService.set(APP_SESSION_USER_KEY_PREFIX + redisKey, jsonStr, APP_SESSION_EXPIRE_TIME);
+        redisService.set(APP_SESSION_USER_KEY_PREFIX + key, jsonStr, APP_SESSION_EXPIRE_TIME);
     }
 
     /**
      * 清除缓存用户登录信息
      */
-    private void removeCacheLoginInfo(String redisKey) {
-        if (StringUtils.isEmpty(redisKey)) {
-            throw new ApiException("redisKey must be not empty.");
+    private void removeCacheLoginInfo(String key) {
+        if (StringUtils.isEmpty(key)) {
+            throw new ApiException("key must be not empty.");
         }
-        redisService.delete(APP_SESSION_USER_KEY_PREFIX + redisKey);
+        redisService.delete(APP_SESSION_USER_KEY_PREFIX + key);
     }
 
     /**
      * 获取缓存中的用户登录信息
      */
     @Override
-    public LoginInfo getLoginInfo(String redisKey) {
-        if (StringUtils.isEmpty(redisKey)) {
-            throw new ApiException("redisKey must be not empty.");
+    public LoginInfo getLoginInfo(String key) {
+        if (StringUtils.isEmpty(key)) {
+            throw new ApiException("key must be not empty.");
         }
-        return redisService.fromJson(APP_SESSION_USER_KEY_PREFIX + redisKey, LoginInfo.class);
+        return redisService.fromJson(APP_SESSION_USER_KEY_PREFIX + key, LoginInfo.class);
     }
 
     /**

+ 1 - 2
src/test/java/cn/com/qmth/examcloud/app/ServiceTest.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.examcloud.app;
 
 import cn.com.qmth.examcloud.app.core.utils.JsonMapper;
-import cn.com.qmth.examcloud.app.core.utils.StrUtils;
 import cn.com.qmth.examcloud.app.model.LoginInfo;
 import cn.com.qmth.examcloud.app.model.UserInfo;
 import cn.com.qmth.examcloud.app.service.RedisService;
@@ -27,7 +26,7 @@ public class ServiceTest {
         UserInfo user = redisService.getObj(key, UserInfo.class);
         System.out.println(new JsonMapper().toJson(user));
 
-        key = APP_SESSION_USER_KEY_PREFIX + StrUtils.md5Key(key);
+        key = APP_SESSION_USER_KEY_PREFIX + key;
         LoginInfo loginInfo = redisService.fromJson(key, LoginInfo.class);
         System.out.println(new JsonMapper().toJson(loginInfo));
     }