我创建了一种使用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());
}
}