deason 7 år sedan
förälder
incheckning
c8781b9edc

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

@@ -9,7 +9,7 @@ package cn.com.qmth.examcloud.app.controller.version1;
 
 import cn.com.qmth.examcloud.app.model.LoginInfo;
 import cn.com.qmth.examcloud.app.model.Result;
-import cn.com.qmth.examcloud.app.model.User;
+import cn.com.qmth.examcloud.app.model.UserInfo;
 import cn.com.qmth.examcloud.app.service.UserAuthService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -35,10 +35,10 @@ public class UserAuthRestController {
 
     @ApiOperation(value = "登录接口")
     @RequestMapping(value = "/user/login", method = {RequestMethod.GET, RequestMethod.POST})
-    public Result<User> login(@RequestParam String account, @RequestParam String password, @RequestParam(required = false) String accountType,
-                              @RequestParam(required = false) Long rootOrgId, @RequestParam(required = false) String domain) throws Exception {
+    public Result<UserInfo> login(@RequestParam String account, @RequestParam String password, @RequestParam(required = false) String accountType,
+                                  @RequestParam(required = false) Long rootOrgId, @RequestParam(required = false) String domain) throws Exception {
         LoginInfo loginInfo = new LoginInfo(account, password, accountType, rootOrgId, domain);
-        Result<User> result = userAuthService.login(loginInfo);
+        Result<UserInfo> result = userAuthService.login(loginInfo);
         if (result.isSuccess()) {
             //缓存登录信息
             userAuthService.cacheLoginInfo(loginInfo, result.getData());

+ 42 - 0
src/main/java/cn/com/qmth/examcloud/app/core/config/RedisConfig.java

@@ -0,0 +1,42 @@
+/*
+ * *************************************************
+ * Copyright (c) 2018 QMTH. All Rights Reserved.
+ * Created by Deason on 2018-08-02 09:21:53.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.app.core.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * @author: fengdesheng
+ * @since: 2018/8/2
+ */
+@Configuration
+public class RedisConfig {
+
+    @Bean
+    public RedisTemplate<String, Object> strRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+        Jackson2JsonRedisSerializer<?> jacksonSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jacksonSerializer.setObjectMapper(objectMapper);
+        redisTemplate.setValueSerializer(jacksonSerializer);
+        redisTemplate.setKeySerializer(new StringRedisSerializer());
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+        redisTemplate.afterPropertiesSet();
+        return redisTemplate;
+    }
+
+}

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

@@ -10,7 +10,7 @@ package cn.com.qmth.examcloud.app.core.config;
 import cn.com.qmth.examcloud.app.model.Constants;
 import cn.com.qmth.examcloud.app.model.LoginInfo;
 import cn.com.qmth.examcloud.app.model.Result;
-import cn.com.qmth.examcloud.app.model.User;
+import cn.com.qmth.examcloud.app.model.UserInfo;
 import cn.com.qmth.examcloud.app.service.UserAuthService;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -47,8 +47,8 @@ public class TokenFilter implements Filter {
                 if (loginInfo.hasExpired(PLATFORM_SESSION_EXPIRE_TIME)) {
                     //已超过有效时间,则自动登录续期
                     try {
-                        Result<User> result = userAuthService.login(loginInfo);
-                        User userInfo = result.getData();
+                        Result<UserInfo> result = userAuthService.login(loginInfo);
+                        UserInfo userInfo = result.getData();
                         if (userInfo != null) {
                             //登录成功后缓存新的login token
                             log.info("redisKey:" + redisKey + " key:" + userInfo.getKey() + " newToken:" + userInfo.getToken());

+ 1 - 1
src/main/java/cn/com/qmth/examcloud/app/model/User.java → src/main/java/cn/com/qmth/examcloud/app/model/UserInfo.java

@@ -15,7 +15,7 @@ import java.io.Serializable;
  * @author: fengdesheng
  * @since: 2018/7/16
  */
-public class User implements Serializable {
+public class UserInfo implements Serializable {
     private static final long serialVersionUID = 8766713125414955078L;
     /**
      * 用户ID

+ 2 - 2
src/main/java/cn/com/qmth/examcloud/app/service/RedisService.java

@@ -28,7 +28,7 @@ public class RedisService {
     @Autowired
     private StringRedisTemplate stringRedisTemplate;
     @Autowired
-    private RedisTemplate<Object, Object> redisTemplate;
+    private RedisTemplate<String, Object> redisTemplate;
 
     public void set(String key, String value) {
         stringRedisTemplate.opsForValue().set(key, value);
@@ -54,7 +54,7 @@ public class RedisService {
         return stringRedisTemplate;
     }
 
-    public RedisTemplate<Object, Object> getRedisTemplate() {
+    public RedisTemplate<String, Object> getRedisTemplate() {
         return redisTemplate;
     }
 

+ 3 - 3
src/main/java/cn/com/qmth/examcloud/app/service/UserAuthService.java

@@ -9,7 +9,7 @@ package cn.com.qmth.examcloud.app.service;
 
 import cn.com.qmth.examcloud.app.model.LoginInfo;
 import cn.com.qmth.examcloud.app.model.Result;
-import cn.com.qmth.examcloud.app.model.User;
+import cn.com.qmth.examcloud.app.model.UserInfo;
 
 /**
  * 认证中心业务服务接口
@@ -19,7 +19,7 @@ import cn.com.qmth.examcloud.app.model.User;
  */
 public interface UserAuthService {
 
-    Result<User> login(LoginInfo loginInfo) throws Exception;
+    Result<UserInfo> login(LoginInfo loginInfo) throws Exception;
 
     Result logout(String key, String token) throws Exception;
 
@@ -29,7 +29,7 @@ public interface UserAuthService {
 
     Result userBindingPhone(String key, String token, Long userId, String phone, String code);
 
-    void cacheLoginInfo(LoginInfo loginInfo, User userInfo);
+    void cacheLoginInfo(LoginInfo loginInfo, UserInfo userInfo);
 
     void cacheLoginInfo(LoginInfo loginInfo, String key);
 

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

@@ -41,7 +41,7 @@ public class UserAuthServiceImpl implements UserAuthService {
     private RedisService redisService;
 
     @Override
-    public Result<User> login(LoginInfo loginInfo) throws Exception {
+    public Result<UserInfo> login(LoginInfo loginInfo) throws Exception {
         Assert.notNull(loginInfo, "LoginInfo must be not null.");
         if (StringUtils.isBlank(loginInfo.getAccountType())) {
             loginInfo.setAccountType(LoginType.COMMON_LOGIN_NAME.name());
@@ -65,7 +65,7 @@ public class UserAuthServiceImpl implements UserAuthService {
         String bodyStr = response.body().string();
         if (response.isSuccessful()) {
             //获取用户信息
-            User userInfo = new JsonMapper().fromJson(bodyStr, User.class);
+            UserInfo userInfo = new JsonMapper().fromJson(bodyStr, UserInfo.class);
             return new Result().success(userInfo);
         } else {
             log.warn("Http response is " + bodyStr);
@@ -119,7 +119,7 @@ public class UserAuthServiceImpl implements UserAuthService {
     }
 
     @Override
-    public void cacheLoginInfo(LoginInfo loginInfo, User userInfo) {
+    public void cacheLoginInfo(LoginInfo loginInfo, UserInfo userInfo) {
         if (loginInfo == null || userInfo == null) {
             return;
         }

+ 12 - 0
src/test/java/cn/com/qmth/examcloud/app/ServiceTest.java

@@ -1,17 +1,29 @@
 package cn.com.qmth.examcloud.app;
 
+import cn.com.qmth.examcloud.app.core.utils.StrUtils;
+import cn.com.qmth.examcloud.app.service.RedisService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import static cn.com.qmth.examcloud.app.model.Constants.APP_SESSION_USER_KEY_PREFIX;
+
 @RunWith(SpringRunner.class)
 @SpringBootTest
 public class ServiceTest {
+    @Autowired
+    private RedisService redisService;
 
     @Test
     public void demo() throws Exception {
+        String key = "U_C_109_18809";
+        Object obj = redisService.getRedisTemplate().opsForValue().get(key);
+        System.out.println(obj);
 
+        String loginInfo = redisService.get(APP_SESSION_USER_KEY_PREFIX + StrUtils.md5Key(key));
+        System.out.println(loginInfo);
     }
 
 }

+ 0 - 5
src/test/java/cn/com/qmth/examcloud/app/SimpleTest.java

@@ -1,6 +1,5 @@
 package cn.com.qmth.examcloud.app;
 
-import cn.com.qmth.examcloud.app.core.utils.StrUtils;
 import org.junit.Test;
 
 import java.time.Duration;
@@ -10,10 +9,6 @@ public class SimpleTest {
     @Test
     public void demo() throws Exception {
         System.out.println(Duration.ofSeconds(1));
-        System.out.println(Duration.ofMinutes(1));
-        System.out.println(Duration.ofHours(1));
-        System.out.println(Duration.ofDays(1));
-        System.out.println(StrUtils.md5Key("U_C_109_18809"));
     }
 
 }