Estoy investigando el tema de la seguridad y los roles de Spring para conseguir hacer roles dinamicamente (por lo que no me vale poner las urls con lo roles en el spring-security-context.xml) y después de conseguirlo parece ser que ahora no deja entrar a ningún usuario a esa url aunque tenga el rol asignado. Os dejo el código a ver si alguien tiene idea de que puede ser.
Código:
Al iniciar la aplicación creo un usuario con el rol USERpublic class JdbcFilterInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource { public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException { FilterInvocation fi = (FilterInvocation) object; String url = fi.getRequestUrl(); HttpServletRequest request = fi.getHttpRequest(); // Instead of hard coding the roles lookup the roles from the database using the url and/or HttpServletRequest // Do not forget to add caching of the lookup String[] roles = new String[]{}; if("/person/list".equals(url)){ roles = new String[] { "ROLE_USER" }; } return SecurityConfig.createList(roles); } public Collection<ConfigAttribute> getAllConfigAttributes() { return null; } public boolean supports(Class<?> clazz) { return FilterInvocation.class.isAssignableFrom(clazz); } }
Código:
En principio consigo loguearme en la aplicación pero en cuanto llego a /person/list me da el siguiente error (basicamente es que me deniega el acceso por permisos)accountRepository.save(new Account("[email protected]", "demo", "ROLE_USER"));
Código:
Saludos 2015-08-05 10:01:56.457 [localhost-startStop-1] WARN o.s.s.c.h.DefaultFilterChainValidator - Anonymous access to the login page doesn't appear to be enabled. This is almost certainly an error. Please check your configuration allows unauthenticated access to the configured login page. (Simulated access was rejected: org.springframework.security.access.AccessDeniedException: Access is denied)