【发布时间】:2017-02-02 16:25:42
【问题描述】:
我们使用的是 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 在那里工作。
【问题讨论】:
标签: java spring spring-security