将 Spring Security 配置为使用自定义 UsernamePasswordAuthenticationFilter
我已经实现了我自己的,它只是的一个子类。LowerCaseUsernamePasswordAuthenticationFilter
UsernamePasswordAuthenticationFilter
但现在我的问题是,如何配置Spring安全性以使用此过滤器。
到目前为止,我使用:
<security:http auto-config="true" use-expressions="true">
<security:form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t" />
<security:logout logout-url="/resources/j_spring_security_logout" />
<security:intercept-url pattern="/**" access="isAuthenticated()" requires-channel="${cfma.security.channel}" />
</security:http>
我真的需要转动并需要手动配置所有过滤器吗?- 如果这是真的,任何人都可以提供一个例子吗?auto-config
简单地添加一个的方法:security:custom-filter
<security:http ...>
<security:form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t" />
<security:custom-filter ref="lowerCaseUsernamePasswordAuthenticationFilter" position="FORM_LOGIN_FILTER"/>
...
</security:http>
确实会导致该消息异常:
配置问题:Filter bean 和 'Root bean: class [org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter];范围 =;抽象=假;lazyInit=false;自动线模式 = 0;依赖性检查= 0;自动线候选 = 真;主要 = 假;factoryBeanName=null;工厂方法名称 =空;initMethodName=null;destroyMethodName=null' 具有相同的“order”值。使用自定义过滤器时,请确保位置不与默认过滤器冲突。或者,您可以通过从 中删除相应的子元素并避免使用 来禁用默认筛选器。
<lowerCaseUsernamePasswordAuthenticationFilter>