对于ROLE_USER,下面的第三和第四个拦截网格模式是多余的吗?在我看来,“/ ”还会捕获与“/ account / .do”相匹配的任何请求网址。
<security:filter-security-metadata-source>
<security:intercept-url pattern="/login.do" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<security:intercept-url pattern="/home.do" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<security:intercept-url pattern="/account/*.do" access="ROLE_USER"/>
<security:intercept-url pattern="/*" access="ROLE_USER"/>
答案 0 :(得分:1)
再次阅读问题,是的,第三条规则看起来实际上是多余的(我首先回答的问题就好像你要问的是除了最后一条规则之外的所有其他规则)。
模式总是按照定义的顺序进行评估。就这样吧 重要的是,更具体的模式定义更高 列表比不太具体的模式。
因此,如果登录用户尝试访问“/account/.do”,则会触发第三条规则,但除此之外,第四条规则仍然允许访问,这确实使第三条规则变得多余在这种情况下。测试这个的最简单方法可能就是注释掉或删除第三条规则,然后测试你是否仍然可以访问“/ account”(你应该能够访问)下的页面。