繁体   English   中英

Spring Security定义一个自定义匿名过滤器

[英]Spring Security define a custom anonymous filter

我们正在使用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。

请告诉我:

  1. 这是定义自定义匿名过滤器的正确方法吗?
  2. 我如何在这里authowire其他豆进行authowire

我使用相同的方法来定义自定义UserDetailsService ,并且autowire在那里工作。

据我了解, Spring Security文档可以像这样向用户添加其他角色:

<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>

这样,您可能可以避免编写自己的身份验证筛选器。

试试看。 我希望它适合您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM