2011-09-12 25 views
19

Aquí es una parte de la primavera de Seguridad ejemplo petclinic:Diferencia entre access = "permitAll" y 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> 

¿Cuál es la diferencia entre el acceso = "permitAll" y filtros = "none"?

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

Respuesta

28

La diferencia es que filters = "none" desactiva los filtros de seguridad para la primavera las direcciones URL especificadas, mientras que access = "permitAll" configura autorización sin desactivar los filtros.

En la práctica, filters = "none" puede causar problemas cuando los recursos detrás de esto requieren alguna funcionalidad de Spring Security. Por ejemplo, no puede usarlo para la página de registro del usuario que realiza el inicio de sesión programático al enviar (User Granted Authorities are always : ROLE_ANONYMOUS?).

+0

Entonces, ¿debería usar 'access =" permitAll "' en lugar de 'filters =" none "' incluso para archivos css y js para una aplicación segura? – kamaci

+0

Comenté en su enlace también. – kamaci

+0

@kamaci: Por lo que entiendo, 'filters =" none "' no debe causar ningún problema para los recursos estáticos. Sin embargo, si lo usa para recursos dinámicos, debe tener en cuenta la diferencia. – axtavt