我有以下定义......
<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="/secure/images/**" access="ROLE_TIER0"/>
<sec:intercept-url pattern="/**" access="ROLE_TIER0"/>
</sec:filter-invocation-definition-source>
</property>
</bean>
我想拥有这个网址的资源......
“/不安全/ **”
对所有通话开放,即周围无安全保障。
我试过添加......
<sec:intercept-url pattern="/nonsecure/**" access="permitAll" />
但是这会导致Websphere抛出关于
的错误Unsupported configuration attributes: [permitAll]
有人可以告诉我如何从安全性中排除此网址吗?
答案 0 :(得分:84)
在spring security 3.1.x中,不推荐使用filters =“none”。相反,您使用多个<http>
标记,如下所示:
<http pattern="/nonsecure/**" security="none"/>
答案 1 :(得分:24)
我认为您必须在安全xml的use-expressions
配置中添加http
标记,例如:
<http auto-config="true" use-expressions="true">
...
...
</http>
编辑: 好吧,我不确定您使用的是什么版本的弹簧安全性。我知道这适用于3.0,但对于旧版本我不确定。
答案 2 :(得分:19)
<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>
access =“ IS_AUTHENTICATED_ANONYMOUSLY ”是解决方案。 我在以下链接http://syntx.io/adding-http-basic-auth-to-restful-services-in-java-and-spring/
中找到了它自上而下评估拦截。如果你在/ getIntelFeed / **之前写这个/ **,那么所有服务都将通过/ **并且安全性将应用于所有服务。在这种情况下/ getIntelFeed / **将无效。
答案 3 :(得分:17)
尝试:
<sec:intercept-url pattern="/nonsecure/**" filters="none" />
答案 4 :(得分:3)
为了能够使用[permitAll]等表达式,你必须添加一个WebExpressionVoter to your AccessDecisionManager
答案 5 :(得分:0)
您没有指定配置的其余部分,并且因为看起来您有明确的bean配置,所以我们很难准确猜出您是如何配置的。我会说上面答案的某些组合是正确的。