Java 自定义身份验证筛选器Spring Security 3.2

Java 自定义身份验证筛选器Spring Security 3.2,java,spring,spring-security,Java,Spring,Spring Security,对于一个项目,我尝试使用SpringSecurity3.2作为基本安全性。因为这个项目已经启动和运行,我已经有了另一个(自己的)安全层。因此,我制作了一个自定义authenticationprovider来融化安全层。工作正常,直到我还需要自定义匿名身份验证() 因此,我制作了一个自定义过滤器并移除了原始过滤器: <http request-matcher="regex" use-expressions="true"> <anonymous enabled="false

对于一个项目,我尝试使用SpringSecurity3.2作为基本安全性。因为这个项目已经启动和运行,我已经有了另一个(自己的)安全层。因此,我制作了一个自定义authenticationprovider来融化安全层。工作正常,直到我还需要自定义匿名身份验证()

因此,我制作了一个自定义过滤器并移除了原始过滤器:

<http request-matcher="regex" use-expressions="true">
    <anonymous enabled="false" />
    <custom-filter ref="anonymousAuthFilter" position="ANONYMOUS_FILTER"/>
    ...
</http>
问题是在请求服务器时没有调用doFilter方法。但是正在调用afterPropertiesSet()的init方法。。。有人知道为什么我的customFilter没有被解雇吗


另外,我确实在web.xml文件中命名了delegatingFilterProxy,所以这不是问题。

因为
匿名\u过滤器是与命名空间相关的过滤器。必须避免引用特定筛选器选项的任何命名空间标记:

   <http auto-config='false' request-matcher="regex" use-expressions="true">
    <custom-filter ref="anonymousAuthFilter" position="ANONYMOUS_FILTER"/>
    ...
   </http>

...
有关更多参考,请参阅第2.3.5节中的弹簧安全文档:

编辑:请务必保留
标记


编辑2:更正了我的答案。这个配置应该可以工作。如果没有,那么我们需要从更大的角度来看,你必须发布更多的应用程序,从完整的配置开始。

尝试将你的自定义过滤器插入到其他位置(例如,在=“ANONYMOUS\u filter”之后)。May be anonymous enabled=“false”根据过滤器位置工作?@Maksymdimidas:Thx对于注释,不幸的是它没有更改任何内容。您是否尝试删除anonymous enabled=“false”?是的,在这两个包含为excludedauto的配置都已处于“false”位置(如果未定义)之后尝试。来自文档:auto-config:自动注册登录表单、基本身份验证、匿名身份验证、注销服务、记住我和servlet api集成。如果设置为“true”,则会添加所有这些功能(尽管您仍然可以通过提供相应的元素来自定义每个功能的配置)。如果未指定,则默认为“false”。如前所述,省略“匿名启用=错误”很遗憾不起作用。你是对的。还有另一个问题引起了它。我还有一个security=none的http标记,用于使某些css+js内容对任何人都可见。遗憾的是,这种过滤模式是错误的,我的整个应用程序不再通过我的匿名过滤。谢谢你和我一起思考!
public class SecurityAnonymousAuthenticationFilter extends GenericFilterBean implements InitializingBean {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        logger.info("Entering doFilter method");
        //implementation code here
    }

    //other methods
}
   <http auto-config='false' request-matcher="regex" use-expressions="true">
    <custom-filter ref="anonymousAuthFilter" position="ANONYMOUS_FILTER"/>
    ...
   </http>