Я создал класс, который реализует интерфейс FilterInvocationSecurityMetadataSource.
Я реализовал это так:
public List<ConfigAttribute> getAttributes(Object object) {
FilterInvocation fi = (FilterInvocation) object;
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
Long companyId = ((ExtenededUser) principal).getCompany().getId();
String url = fi.getRequestUrl();
// String httpMethod = fi.getRequest().getMethod();
List<ConfigAttribute> attributes = new ArrayList<ConfigAttribute>();
FilterSecurityService service = (FilterSecurityService) SpringBeanFinder.findBean("filterSecurityService");
Collection<Role> roles = service.getRoles(companyId);
for (Role role : roles) {
for (View view : role.getViews()) {
if (view.getUrl().equalsIgnoreCase(url))
attributes.add(new SecurityConfig(role.getName() + "_" + role.getCompany().getName()));
}
}
return attributes;
}
когда я отлаживаю свое приложение, я вижу, что оно достигает этого класса, оно достигает только метода getAllConfigAttributes, который, как я уже сказал, пуст и возвращает нуль после этого он печатает это предупреждение:
Не удалось проверить атрибуты конфигурации, поскольку SecurityMetadataSource не возвратил никаких атрибутов из getAllConfigAttributes ().
Мой aplicationContext - безопасность выглядит так:
<beans:bean id="filterChainProxy"
class="org.springframework.security.web.FilterChainProxy">
<filter-chain-map path-type="ant">
<filter-chain filters="sif,filterSecurityInterceptor"
pattern="/**" />
</filter-chain-map>
</beans:bean>
<beans:bean id="filterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="accessDecisionManager" ref="accessDecisionManager" />
<beans:property name="securityMetadataSource" ref="filterSecurityMetadataSource" />
</beans:bean>
<beans:bean id="filterSecurityMetadataSource"
class="com.mycompany.filter.FilterSecurityMetadataSource">
</beans:bean>
в чем может быть проблема?