HttpServletRequest getHeader("Authorization") 为空 java spring

时间:2021-07-21 08:47:01

标签: servlets spring-security request jwt roles

我有一个问题。我的 HttpServletRequest 应该在提供标头时返回子字符串,但它返回 null 而不是它,以便在 doFilterInternal 中 if 从未发生并且我的用户没有任何角色/权限集。我不知道为什么会发生这种事情,如果有人发生这种情况,希望得到一些帮助。

提前致谢。

@Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException{
        try {
            String jwt = parseJwt(request);
            if (jwt != null && jwtUtils.validateJwtToken(jwt)) {
                String email = jwtUtils.getEmailFromJwtToken(jwt);

               UserDetails user = userDetailsService.loadUserByUsername(email);
                UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());
                authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));



                SecurityContextHolder.getContext().setAuthentication(authentication);
            }
        } catch (Exception e) {
            logger.error("Cannot set user authentication: {}", e);
        }

        filterChain.doFilter(request, response);
    }
 private String parseJwt(HttpServletRequest request) {
        String headerAuth = request.getHeader("Authorization");

        if (StringUtils.hasText(headerAuth) && headerAuth.startsWith("Bearer ")) {
            return headerAuth.substring(7, headerAuth.length());
        }

        return null;
    }

0 个答案:

没有答案
相关问题