java - 自定义身份验证过滤器 Spring Security 3.2

标签 java spring spring-security

对于一个项目,我尝试使用 Spring Security 3.2 作为基础安全性。因为这个项目已经启动并运行,所以我已经有了另一个(自己的)安全层。因此,我制作了一个自定义身份验证提供程序来融化安全层。工作正常,直到我还需要进行自定义匿名身份验证 ( Spring Security Documentation, chapter 13 )。

所以我制作了一个自定义过滤器并删除了原始过滤器:

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

bean :

<beans:bean id="anonymousAuthFilter" class="own.package.auth.SecurityAnonymousAuthenticationFilter">
    <beans:property name="key" value="anonymousKey "/>
    <beans:property name="userAttribute" value="anonymous,ROLE_ANONYMOUS"/>
</beans:bean>

和 te Java 类:

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
}

问题是请求服务器时没有调用doFilter方法。但是正在调用 init 方法 afterPropertiesSet() ......有谁知道为什么我的 customFilter 没有被触发?

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

最佳答案

ANONYMOUS_FILTER是一个 namespace 相关的过滤器。您必须避免引用特定过滤器 psoition 的任何 namespace 标记:

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

如需进一步引用,请参阅第 2.3.5 节中的 Spring 安全文档:http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ns-config.html

编辑:并且肯定会留下 <anonymous-enabled=false/>标签。

编辑 2:更正了我的答案。此配置应该有效。如果没有,那么我们需要开始着眼于更大的图景,并且您必须发布更多您的应用,从完整的配置开始。

关于java - 自定义身份验证过滤器 Spring Security 3.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773877/

相关文章:

Java 8 流映射,将 null 保留为 null

java - 无法降低对象继承方法的可见性

rest - 在 Grails 中使用 Spring-Security-Rest 插件拦截登录调用

java - 如何找出类名指示的内部匿名类?

java - new 关键字的本地使用

spring - RestTemplate 无法获取 JSONObject

java - AOP in spring 切面警告

Spring security Oauth2 资源所有者密码凭据授予

java - spring ntlmV2 不支持

grails - 使用Dynamodb的Grails Spring 安全性