0
我们使用的是Spring Security版本4.默认情况下,匿名用户拥有ROLE_ANONYMOUS
分配。Spring Security定义了一个定制的匿名过滤器
我们想为匿名用户添加更多角色。
我试图延长AnonymousAuthenticationFilter
并将其添加到如下春季安全方面:
<http entry-point-ref="authenticationEntryPoint">
<custom-filter ref="sabaAnonymousAuthenticationFilter" position="ANONYMOUS_FILTER"/>
<anonymous enabled="false"/>
.....
<beans:bean id="sabaAnonymousAuthenticationFilter"
class="foo.bar.CustomAnonymousAuthenticationFilter">
<beans:constructor-arg index="0" value="SomeUniqueKeyForThisApplication"/>
</beans:bean>
和类:
public class CustomAnonymousAuthenticationFilter extends AnonymousAuthenticationFilter {
@Inject
HelperClass aHelperClass;
public CustomAnonymousAuthenticationFilter(String key) {
super(key);
getAuthorities().add(new SimpleGrantedAuthority("ROLE_FOO_BAR"));
......
}
}
上面的代码改变匿名角色,并添加ROLE_FOO_BAR
,但我在此过滤器中不能使用@Inject
或@Autowire
其他Spring bean。
请让我知道:
- 这是定义自定义过滤匿名的正确方法?
- 我怎样才能
authowire
其他豆在这里?
我用同样的方法来定义自定义UserDetailsService
和autowire
在那里工作。
谢谢,但我需要我自己的类,因为'roles'不能用xml进行硬编码,并且应该从文件中读取。 –
也许这篇文章http://stackoverflow.com/questions/32494398/unable-to-autowire-the-service-inside-my-authentication-filter-in-spring将解决您的autowire问题。 – Compito