我们使用的是Spring Security版本4.默认情况下,匿名用户已分配ROLE_ANONYMOUS
。
我们希望为匿名用户添加更多角色。
我尝试扩展AnonymousAuthenticationFilter
并将其添加到Spring Security上下文中,如下所示:
<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
在那里工作。
答案 0 :(得分:2)
据我所知,spring security documentation可以像这样为用户添加一个额外的角色:
<bean id="anonymousAuthFilter"
class="org.springframework.security.web.authentication.AnonymousAuthenticationFilter">
<property name="key" value="foobar"/>
<property name="userAttribute" value="anonymousUser,ROLE_ANONYMOUS, ROLE_FOOBAR"/>
</bean>
这样您就可以避免编写自己的身份验证过滤器。
试一试。我希望它符合您的需求。