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

[微信第三方登录][修改]:登录修改

release_toaliyun_real
Stormeye Wu 7 лет назад
Родитель
Сommit
a33bb3aeab
2 измененных файлов: 29 добавлений и 6 удалений
  1. +15
    -0
      mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java
  2. +14
    -6
      mallinkAdmin/src/main/java/com/iformall/controller/WechatLoginController.java

+ 15
- 0
mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java Просмотреть файл

@@ -109,4 +109,19 @@ public class RedisConfig extends CachingConfigurerSupport {
return template;
}

@Bean("openRedisTemplate")
public RedisTemplate<String, String> getWeChatOpen(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, String> template = new RedisTemplate<String, String>();

// value值的序列化
template.setValueSerializer(new StringRedisSerializer());

// key的序列化
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());

template.setConnectionFactory(connectionFactory);
return template;
}

}

+ 14
- 6
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<String, String> 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<DisplayUserInfo> users = new ArrayList<DisplayUserInfo>();
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 {


Загрузка…
Отмена
Сохранить