2016-12-02 84 views
0

我正在尝试按照,但它似乎并没有工作。春季安全可以保护整个网站,除了一些网址吗?

<intercept-url pattern="/**" access="hasRole('ROLE_USER')" /> 
<intercept-url pattern="/abc/**" access="permitAll"/> 

我知道这是一个有点古怪,让有些人甚至根本固定,但我们的要求是建立在当前应用程序中的一个“全新”的应用程序。

回答

0

Spring Security Reference

41.1.24 <拦截的URL >

这个元素用来定义URL模式集合,应用对什么感兴趣并配置它们应该如何被处理。它用于构造由FilterSecurityInterceptor使用的FilterInvocationSecurityMetadataSource。例如,如果需要通过HTTPS访问特定的URL,它还负责配置ChannelProcessingFilter。当针对传入请求匹配指定模式时,匹配按声明元素的顺序完成。所以最具体的模式应该是第一位的,最普通的模式应该是最后一位。

修改后的配置:

<intercept-url pattern="/abc/**" access="permitAll"/> 
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" /> 
0

当然,你可以忽略某些URL模式。如果您使用的是Java的配置,你把下一个方法在安全配置类:

@Override 
    public void configure(WebSecurity web) throws Exception { 
     web.ignoring().antMatchers("/url/to/ignore/**");  
    } 

XML模拟:

<http pattern="/url/to/ignore/**" security="none"/>