在 Spring Interceptor 中传递新标头

jak*_*aks 1 spring interceptor

我想向拦截器添加身份验证逻辑。当服务被调用时,拦截器将进行身份验证。经过身份验证后,我想在请求中添加一个新标头,例如“header-user”:“john-doe”。但在拦截器中,我无法做到这一点,当我添加到 response.setHeader() 时,什么也没有发生。我想在实际的 REST 服务中使用这个新标头。

public class AuthInterceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

  // Authenticate
  // Add header
   response.setHeader("header-user", "john-doe"); // not working

    return true;
  }
...
}
Run Code Online (Sandbox Code Playgroud)

如果我添加过滤器,过滤器会在拦截器之前被调用。

jak*_*aks 5

我从Using Spring Interceptor中发现我可以使用setAttribute

request.setAttribute("user", "john-doe");
Run Code Online (Sandbox Code Playgroud)

在控制器端使用时,

public String testService(@RequestAttribute("user") String user){
Run Code Online (Sandbox Code Playgroud)