Commit 97be4aa0 by chentianzhong

过滤器判断获取当前用户

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