Spring Boot-名称授权的响应标头不返回令牌值

时间:2020-03-14 09:27:27

标签: spring-boot spring-security

我创建了一种使用Springboot处理身份验证的方法。 我有一个奇怪的问题。我想返回带有承载令牌的自定义标头。我添加了以下行来设置标题:

res.addHeader("Authorization", SecurityConstants.TOKEN_PREFIX + token);

我启动了应用程序,但未返回标头。我试图添加另一个带有伪文本的标头,并且已正确返回。最后,我添加了另一个响应头

res.addHeader("Auth", SecurityConstants.TOKEN_PREFIX + token);

由于某种原因,Auth与令牌值一起正确显示。我只是想知道为什么我不能将Authorization作为标头名称。 这是成功的身份验证方法。这不是一个非常“战略性”的问题,但我想知道为什么使用Authorization在另一个类似的项目上而不是现在进行。 Spring引导版本是:2.2.4.RELEASE

    @Override
    protected void successfulAuthentication(HttpServletRequest req,
                                            HttpServletResponse res,
                                            FilterChain chain,
                                            Authentication auth) throws IOException, ServletException {

        String userName = ((User) auth.getPrincipal()).getUsername();
        UserDto userDetails = userService.getUserDetailsByEmail(userName);

        String token = Jwts.builder()
                .setSubject(userDetails.getUserKeyId())
                .setExpiration(new Date(System.currentTimeMillis() + SecurityConstants.EXPIRATION_TIME))
                .signWith(SignatureAlgorithm.HS512, SecurityConstants.TOKEN_SECRET)
                .compact();

        res.addHeader("Auth", SecurityConstants.TOKEN_PREFIX + token);
        res.addHeader("Authorization", SecurityConstants.TOKEN_PREFIX + token);
        res.addHeader("userId", userDetails.getUserId());
    }

}

0 个答案:

没有答案
相关问题