[英]Spring MVC - Add custom CSRF Header to all HTTP responses
在我的Spring MVC应用程序中,我想在带注释的控制器方法上实现一种CSRF标头。
我已经在HandlerInterceptorAdapter.preHandle
方法上实现了100%正常工作的客户端CSRF标头解析器,并且我曾经尝试在同一处理程序中在afterCompletion
内部为响应生成标头,因为这似乎是最适合我的地方:
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
if (handler instanceof HandlerMethod) {
HandlerMethod handlerMethod = (HandlerMethod) handler;
boolean requestCheck = handlerMethod.getMethodAnnotation(CSRF.class) != null;
if (requestCheck && handlerMethod.getMethodAnnotation(CSRF.class).response()) {
response.addHeader(payloadEncryptedHeaderName, SecureUtil.buildCsrfHeader(salt, response));
}
}
super.afterCompletion(request, response, handler, ex);
}
在这个线程中有人告诉我,我不能使用该方法,最好使用Filter,但是我注意到在doFilter
...
- 无法将标头设置为响应(或至少我找不到方法)
- 在控制器执行之前(而不是之后)调用
doFilter
方法。
我真的很想深入了解如何处理这些拦截器,因此有人可以通过示例向我解释我可以操纵HttpServletResponse
来实现我的目标的最佳位置吗?
发现我的其他线程的解决方案在这里一切都abount使用ResponseBodyAdvice
为了达到我的目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.