前端页面用户登录的问题

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 org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextHolderStrategy;
import org.springframework.security.web.context.SecurityContextRepository;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
@ -27,10 +29,23 @@ import java.io.IOException;
@WebFilter(filterName = "ContentCachingFilter", urlPatterns = "/*")
public class UserTokenFilter extends OncePerRequestFilter {
private static final AntPathMatcher ANT_PATH_MATCHER = new AntPathMatcher();
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String userId = request.getHeader("X-USER-ID");
String source = request.getHeader("X-SOURCE");
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);
return;
}