我正在使用spring安全性,我必須同時使用過濾器鏈和命名空間。命名空間工作正常,但似乎過濾器鏈不!
這是我的配置。首先,命名空間:
Spring Security - 我可以同時使用名稱空間和過濾器鏈嗎?
<sec:global-method-security secured-annotations="enabled" />
<sec:http pattern="/app/login.jsp*" security="none" />
<sec:http pattern="/admin/login.jsp*" security="none" />
<sec:http pattern="/app/*.png" security="none" />
<sec:http pattern="/admin/*.png" security="none" />
<sec:http pattern="/app/**" authentication-manager-ref="authenticationManager"
access-decision-manager-ref="accessDecisionManager">
<sec:intercept-url pattern="/app/**" access="ROLE_USER" />
<sec:access-denied-handler error-page="/app/login.jsp?aer=" />
<sec:form-login login-processing-url="/app/j_spring_security_check"
always-use-default-target="true" default-target-url="/app/index.html"
login-page='/app/login.jsp' authentication-failure-url='/app/login.jsp?login_error' />
<sec:logout logout-url="/app/j_spring_security_logout"
invalidate-session="true" logout-success-url="/app/login.jsp" />
</sec:http>
<sec:http pattern="/admin/**" authentication-manager-ref="authenticationManager"
access-decision-manager-ref="accessDecisionManager">
<sec:intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
<sec:access-denied-handler error-page="/admin/login.jsp?aer=" />
<sec:form-login login-processing-url="/admin/j_spring_security_check"
always-use-default-target="true" default-target-url="/admin/index.html"
login-page='/admin/login.jsp' authentication-failure-url='/admin/login.jsp?login_error' />
<sec:logout logout-url="/admin/j_spring_security_logout"
invalidate-session="true" logout-success-url="/admin/login.jsp" />
</sec:http>
這工作得很好。但我也需要有一個過濾器鏈來檢查其他請求。 (動態創建這些要求,我們必須控制他們這樣)
這是我的過濾器鏈:
<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
<security:filter-chain-map path-type="ant">
<sec:filter-chain pattern="/css/**" filters="none" />
<sec:filter-chain pattern="/common/**" filters="none" />
<sec:filter-chain pattern="/images/**" filters="none" />
<sec:filter-chain pattern="/login.jsp*" filters="none" />
<sec:filter-chain pattern="/rest/**"
filters="
ConcurrentSessionFilter,
securityContextPersistenceFilter,
logoutFilter,
authenticationProcessingFilter,
sessionManagementFilter,
exceptionTranslationFilter,
filterSecurityInterceptor" />
</security:filter-chain-map>
</bean>
的問題是,過濾鏈不控制任何。我確信,當不使用名稱空間時,過濾器鏈工作正常。但是當我添加命名空間時,問題就開始了。
爲什麼?我不能使用它嗎?或者我可以和我必須改變一些東西?
更新:
這是我的調試日誌調用該資源時:/rest/asrv/gtallmmbrsofusrgrp
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/app/login.jsp*'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/admin/login.jsp*'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/app/*.png'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/admin/*.png'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/app/**'
DEBUG AntPathRequestMatcher - Checking match of request : '/rest/asrv/gtallmmbrsofusrgrp'; against '/admin/**'
DEBUG FilterChainProxy - /rest/asrv/gtallmmbrsofusrgrp has no matching filters
從你配置命名空間的方式,我假設你正在使用SS 3.1?基於你的問題的特殊性,你似乎知道你在配置方面正在做什麼 - 你是否試圖應用這個過濾器鏈而不是*命名空間聲明,或者除了它們? –
2012-07-23 15:11:18
我試圖將這些過濾器添加到命名空間。 –
2012-07-23 15:27:05
我已更新我的問題@PeterMularien。現在你可以看到filter-chain-proxy不起作用。這是我的配置導致這個問題嗎?我必須更改訂單嗎? – 2012-07-25 09:48:08