From a33bb3aeab72ac2b3f6a42ec3ea4b4bd7318f862 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 28 Feb 2019 11:21:37 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E7=AC=AC=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E7=99=BB=E5=BD=95][=E4=BF=AE=E6=94=B9]:=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/config/RedisConfig.java | 15 ++++++++++++++ .../controller/WechatLoginController.java | 20 +++++++++++++------ 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java b/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java index 2e6e9bc63..ef64601a0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java @@ -109,4 +109,19 @@ public class RedisConfig extends CachingConfigurerSupport { return template; } + @Bean("openRedisTemplate") + public RedisTemplate getWeChatOpen(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + // value值的序列化 + template.setValueSerializer(new StringRedisSerializer()); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java index d3c1a7e18..aa98fc42c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java @@ -26,6 +26,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -35,6 +37,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; @Controller @@ -52,6 +55,10 @@ public class WechatLoginController extends BaseController { @Autowired private MallUserRoleService mallUserRoleService; + @Autowired + @Qualifier("openRedisTemplate") + RedisTemplate openRedisTemplate; + @Data private class DisplayUserInfo { String mallName; @@ -111,8 +118,9 @@ public class WechatLoginController extends BaseController { } else { // 跳转登录选择页面 String key = TOTP.generateWechatOpen(accessToken.getOpenId()); - RedisUtils redisUtils = new RedisUtils(); - redisUtils.set(WECHAT_PREV + key, accessToken.getOpenId()); + if (openRedisTemplate.opsForValue().setIfAbsent(WECHAT_PREV + key, accessToken.getOpenId())){ + openRedisTemplate.expire(key, 30, TimeUnit.SECONDS); + } List users = new ArrayList(); for(MallUserInfoVo user: userList) { DisplayUserInfo disUser = new DisplayUserInfo(); @@ -152,12 +160,12 @@ public class WechatLoginController extends BaseController { String host = request.getHeader("host"); String openKey = WECHAT_PREV + key; - RedisUtils redisUtils = new RedisUtils(); // 限时时间内查找到此用户openId - if(redisUtils.hasKey(openKey)) { - String openId = redisUtils.get(openKey); + if (openRedisTemplate.hasKey(WECHAT_PREV + key)){ + String openId = openRedisTemplate.opsForValue().get(openKey); // 删除缓存 - redisUtils.delete(openKey); + openRedisTemplate.delete(openKey); + MallUserInfo userInfo = mallUserInfoService.getByUsername(userName); if(userInfo.getWebOpenId().equals(openId)) { try {