2011-09-12 11 views
19

Oto część z Wiosna Bezpieczeństwa petclinic przykład:Różnica między access = "allowAll" i filters = "none"?

<http use-expressions="true"> 
    <intercept-url pattern="/" access="permitAll"/> 
    <intercept-url pattern="/static/**" filters="none" /> 
    <intercept-url pattern="/**" access="isAuthenticated()" /> 
    <form-login /> 
    <logout /> 
</http> 

Jaka jest różnica między dostępem = „permitAll” i filtry = „none”?

Url:http://static.springsource.org/spring-security/site/petclinic-tutorial.html

Odpowiedz

28

Różnica polega na tym, że filters = "none" wyłącza filtry Wiosna zabezpieczeń dla określonych adresów URL, natomiast access = "permitAll" konfiguruje zezwolenia bez wyłączania filtrów.

W praktyce może powodować problemy, gdy zasoby za nim wymagają funkcji Spring Security. Na przykład nie można go użyć do strony rejestracji użytkownika, która wykonuje automatyczne logowanie przy wysyłaniu (User Granted Authorities are always : ROLE_ANONYMOUS?).

+0

Czy powinienem używać 'access =" allowAll "' zamiast 'filters =" none "' nawet dla plików css i js dla zabezpieczonej aplikacji? – kamaci

+0

Skomentowałem również twój link. – kamaci

+0

@kamaci: O ile rozumiem, 'filters =" none "nie powinno powodować problemów dla zasobów statycznych. Jeśli jednak używasz go do dynamicznych zasobów, musisz pamiętać o tej różnicy. – axtavt