2010-05-19 3 views
5

В справочном документе указано, что URL-адреса сопоставлены в том же порядке, что и объявлено, но один объявленный последний сопоставляется перед некоторыми из объявленных ранее.Spring security 3.0 intercept-url order

Вот мое заявление:

<intercept-url pattern="/static/**" filters="none" /> 
<intercept-url pattern="/login.jsp*" filters="none" /> 
<intercept-url pattern="/logout.jsp*" filters="none" /> 
<intercept-url pattern="/forgotpassword*" filters="none" /> 
<intercept-url pattern="/WEB-INF/jsp/forgotpassword*" filters="none" />  
<intercept-url pattern="**/ordersearch*" access="hasRole('ROLE_VIEW_ORDER_STATUS')" /> 
<intercept-url pattern="**/creditstatus*" access="hasRole('ROLE_VIEW_CREDIT_STATUS')" /> 
<intercept-url pattern="**/shop*" access="hasRole('ROLE_INTERNAL') and hasRole('ROLE_CREATE_SALES_ORDER')" /> 
<intercept-url pattern="/**" access="hasAnyRole('ROLE_INTERNAL','ROLE_EXTERNAL')" /> 

Он пытается соответствовать для того, чтобы все filters="none", но затем переходит к последнему шаблону /**. Таким образом, URL-адрес, такой как /appname/ordersearch, перехватывается /** вместо **/ordersearch*. Любая идея, что я делаю неправильно?

ответ

3

**/ordersearch* не соответствует /appname/ordersearch, вам необходимо /**/ordersearch*.

Смежные вопросы