2017-04-17 65 views
0

Spring Security 2.x正在拦截http:servername/webAppName。根据我的理解,filter="none"应该丢弃任何不需要访问角色的URL的Spring Security筛选器链。任何人都知道为什么这个设置拦截所有未声明的URL(/listing/load),包括基本URL?Spring Security url-interceptor leak at/*

<http auto-config="true" entry-point-ref="entryPoint" session-fixation-protection="none"> 
    <intercept-url pattern="/listing/pages/*" filters="none"/> 
    <intercept-url pattern="/load/page/*" filters="none"/> 
    <intercept-url pattern="/admin/*" access="ROLE_USER"/> 
    <intercept-url pattern="/secret/*" access="ROLE_USER"/> 
    <intercept-url pattern="/**" filters="none"/> 
    <http-basic/> 
</http> 
+0

看看http://stackoverflow.com/questions/10513688/apply-security-none-to-context-root-and-static-resources-spring-security-versi – dur

+0

谢谢。会看看我是否可以有类似的东西。该链接涵盖了spring安全3.1 – MAXStack

回答

-1

试试这个,

<security:http auto-config="true" entry-point-ref="entryPoint" session- 
fixation-protection="none"> 
<http-basic/> 
<intercept-url pattern="/admin/*" access="ROLE_USER"/> 
<intercept-url pattern="/secret/*" access="ROLE_USER"/> 
<intercept-url pattern="/listing/pages/*" access="ROLE_ANONYMOUS"/> 
<intercept-url pattern="/load/page/*" access="ROLE_ANONYMOUS"/> 
<intercept-url pattern="/**" access="ROLE_ANONYMOUS"/> 
</security:http> 

,是的,检查春季安全您的xmlns命名空间,是罚款?

+0

... MAXStack

+1

用于测试目的我替换为您提及的并最终导致无限循环。 access =“ROLE_ANONYMOUS”不会丢弃过滤器链,并且如果请求头缺少来自站点管理器的信息,则添加的定制过滤器将引发异常。这里的目的是跳过过滤器链。以下是我的名字空间。 – MAXStack

+0

@MAXStack如果你只是想跳过过滤器链(尽管不推荐),那么就做一些类似下面的事情:通过扩展GenericFilterBean来编写你自己的自定义过滤器,然后只需执行你的业务任务,并删除对filterChain.doFilter请求,响应)方法。如果想看到一个例子写入自定义过滤器,请检查我的其他答案http://stackoverflow.com/a/43474961/6838178 – KAmit