Commit 97be4aa0 by chentianzhong

过滤器判断获取当前用户

parent 4837e0c3
......@@ -16,10 +16,12 @@
package com.zq.email.config;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.zq.common.config.security.SecurityProperties;
import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo;
import com.zq.email.feign.AdminFeignClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -28,11 +30,9 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.util.StringUtils;
import org.springframework.web.filter.GenericFilterBean;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
......@@ -64,10 +64,19 @@ public class TokenFilter extends GenericFilterBean {
String token = resolveToken(httpServletRequest);
// 对于 Token 为空的不需要去查 Redis
if (StrUtil.isNotBlank(token)) {
OnlineUserDto onlineUserDto = null;
try {
OnlineUserDto onlineUserDto = adminFeignClient.getTokenUserInfo();
AssertUtils.notNull(onlineUserDto, 401, "微服务异常,当前登录用户失效");
if (onlineUserDto != null && StringUtils.hasText(token)) {
ResultVo<OnlineUserDto> userInfoByToken = adminFeignClient.getUserInfoByToken(token);
if (userInfoByToken.isSuccess() || userInfoByToken.getData() != null ){
onlineUserDto = userInfoByToken.getData();
}
}catch (Exception e){
log.error("执行AdminFeignClient.getUserInfoByToken()方法异常");
log.error(e.getLocalizedMessage(), e);
onlineUserDto = null;
}
if (onlineUserDto != null) {
Authentication authentication = tokenProvider.getAuthentication(token);
SecurityContextHolder.getContext().setAuthentication(authentication);
// Token 续期
......@@ -75,9 +84,6 @@ public class TokenFilter extends GenericFilterBean {
// 设置当前用户
TokenUtils.setAdminContext(onlineUserDto);
}
}catch (Exception e){
AssertUtils.isTrue(false, 401, "微服务异常,当前登录用户失效");
}
}
filterChain.doFilter(servletRequest, servletResponse);
}
......
......@@ -24,7 +24,10 @@ import java.util.List;
public interface AdminFeignClient {
@GetMapping("/oauth/getOnlineUser")
OnlineUserDto getTokenUserInfo();
OnlineUserDto getOnlineUser();
@GetMapping("/oauth/getUserInfoByToken")
ResultVo<OnlineUserDto> getUserInfoByToken(@RequestParam String token);
@GetMapping("/users/getUserById/{userId}")
@AnonymousAccess
......
......@@ -27,11 +27,16 @@ public class AdminFeignFallbackFactory implements FallbackFactory<AdminFeignClie
}
return new AdminFeignClient() {
@Override
public OnlineUserDto getTokenUserInfo() {
public OnlineUserDto getOnlineUser() {
LOG.error("获取当前登入用户信息失败");
return null;
}
@Override
public ResultVo<OnlineUserDto> getUserInfoByToken(String token) {
LOG.error("getUserInfoByToken 失败");
return ResultVo.fail(401, "获取人员token失败");
}
@Override
public CustomerUserVo getUserById(Long userId) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment