java spring 安全递归问题

问题描述 投票:0回答:0

你好我是java spring的新手,我想登录用户时遇到问题。 我得到了错误:

Servlet.service() for servlet [dispatcherServlet] 在路径上下文中 [] 抛出异常 [Handler dispatch failed;嵌套异常是 java.lang.StackOverflowError] 与根本原因 java.lang.StackOverflowError: 空

非常感谢^^

public class SecurityFilter extends OncePerRequestFilter {
    private static final Logger logger = LogManager.getLogger();

    /** Injecté par le setter */
    private UserService userService;

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        try {
            String token = extractTokenFromHeader(request);
            UserDetails user = userService.getUserFromJwt(token);
            setPrincipalInSecurityContext(user);
        } catch (Exception e) {
            logger.info("Impossible de trouver le token", e);
        }
        filterChain.doFilter(request, response);
    }

    private String extractTokenFromHeader(HttpServletRequest request) {
        String bearerToken = request.getHeader("Authorization");
        if (bearerToken != null) {
            return bearerToken.substring(7);
        }
        return null;
    }

    private void setPrincipalInSecurityContext(UserDetails user) {
        UsernamePasswordAuthenticationToken token =
                new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());
        SecurityContextHolder.getContext().setAuthentication(token);
    }

    /// Setters ///
    @Autowired
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
}

screenshot UserService

spring spring-security stack-overflow
© www.soinside.com 2019 - 2024. All rights reserved.