Java Spring HandlerInterceptor未捕获GET、POST以外的方法
我的目标是不允许安全测试建议的Java Spring HandlerInterceptor未捕获GET、POST以外的方法,java,spring,spring-mvc,tomcat,Java,Spring,Spring Mvc,Tomcat,我的目标是不允许安全测试建议的选项、PUT、DELETEHTTP方法 简介 我有一个spring应用程序。我确实在其中嵌入了spring安全性 TRY-1 我试图将添加到web.xml ref- 这正在工作,但它提供了无效的响应头 回应 > Status : 403 > Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS 如上所述,不应返回Allow响应头 TRY-2 因此,我尝试添加HandlerInterceptor public clas
选项、PUT、DELETE
HTTP方法
简介
我有一个spring应用程序。我确实在其中嵌入了spring安全性
TRY-1
我试图将
添加到web.xml ref-
这正在工作,但它提供了无效的响应头
回应
> Status : 403
> Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS
如上所述,不应返回Allow响应头
TRY-2
因此,我尝试添加HandlerInterceptor
public class HTTPMethodInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
if (request.getMethod().equalsIgnoreCase("options") ||
request.getMethod().equalsIgnoreCase("put")||
request.getMethod().equalsIgnoreCase("delete")) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "Unauthorized Request");
return false;
}
return true;
}
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
}
}
编辑
通过在springConfig中注册
<mvc:interceptors>
<bean class="com.HTTPMethodInterceptor" />
</mvc:interceptors>
此预处理用于“GET”和“POST”方法。但它不适用于该方法的其余部分
如果我的理解有误,请纠正我。如果它是重复的,请原谅。我使用了
CSRF
请求匹配器来完成这个技巧,它工作得很好
创建了一个请求匹配器,如下所示
public class SecurityRequestMatcher implements org.springframework.security.web.util.matcher.RequestMatcher {
public static final String OPTIONS = "options";
public static final String DELETE = "delete";
public static final String PUT = "PUT";
@Override
public boolean matches(HttpServletRequest request) {
if (request.getMethod().equalsIgnoreCase(OPTIONS) ||
request.getMethod().equalsIgnoreCase(DELETE)||
request.getMethod().equalsIgnoreCase(PUT)) {
return true;
}
return false;
}
}
Spring配置为
<bean id="securityRequestMatcher"
class="com.SecurityRequestMatcher"/>
<security:http>
<security:csrf request-matcher-ref="securityRequestMatcher"/>
</security:http>
宾果游戏:D您需要它来处理所有请求,还是只处理某些URL?如何将这个
HandlerInterceptor
注册到Spring上下文中?@luboskrnac我需要它用于所有URL<代码>/*会很好。已编辑的登记问题