前端页面用户登录的问题

This commit is contained in:
TS-QD1 2024-07-30 19:01:46 +08:00
parent ad718495d3
commit 5c590b3f52

View File

@ -7,12 +7,14 @@ import ink.wgink.login.oauth2.client.auth.manager.UserToken;
import ink.wgink.pojo.bos.UserInfoBO; import ink.wgink.pojo.bos.UserInfoBO;
import org.springframework.core.Ordered; import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextHolderStrategy; import org.springframework.security.core.context.SecurityContextHolderStrategy;
import org.springframework.security.web.context.SecurityContextRepository; import org.springframework.security.web.context.SecurityContextRepository;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
@ -27,10 +29,23 @@ import java.io.IOException;
@WebFilter(filterName = "ContentCachingFilter", urlPatterns = "/*") @WebFilter(filterName = "ContentCachingFilter", urlPatterns = "/*")
public class UserTokenFilter extends OncePerRequestFilter { public class UserTokenFilter extends OncePerRequestFilter {
private static final AntPathMatcher ANT_PATH_MATCHER = new AntPathMatcher();
@Override @Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String userId = request.getHeader("X-USER-ID"); String userId = request.getHeader("X-USER-ID");
String source = request.getHeader("X-SOURCE");
if (StringUtils.isBlank(userId)) { if (StringUtils.isBlank(userId)) {
Object springSecurityContext = request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
if(!StringUtils.equals(source, "page")) {
filterChain.doFilter(request, response);
return;
}
String requestUri = request.getRequestURI().replaceFirst(request.getContextPath(), "");
if (springSecurityContext == null && ANT_PATH_MATCHER.match("/api/**", requestUri)) {
response.setStatus(HttpStatus.UNAUTHORIZED.value());
return;
}
filterChain.doFilter(request, response); filterChain.doFilter(request, response);
return; return;
} }