Spring Security 3-如何自定义用户名/密码参数?

在使用 Spring Security 3命名空间时,如何自定义UsernamePasswordAuthenticationFilter usernameParameter(j_username)和passwordParameter(j_password)属性? 这是我的理解创建filter,但我没有看到如何自定义它。

这是我根据axtavt的建议创建的解决方案:

弹簧配置:

     

Java类:

 package com.my.package; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.security.web.authentication. UsernamePasswordAuthenticationFilter; public class UserPassAuthFilterBeanPostProcessor implements BeanPostProcessor { private String usernameParameter; private String passwordParameter; @Override public final Object postProcessAfterInitialization(final Object bean, final String beanName) { return bean; } @Override public final Object postProcessBeforeInitialization(final Object bean, final String beanName) { if (bean instanceof UsernamePasswordAuthenticationFilter) { final UsernamePasswordAuthenticationFilter filter = (UsernamePasswordAuthenticationFilter) bean; filter.setUsernameParameter(getUsernameParameter()); filter.setPasswordParameter(getPasswordParameter()); } return bean; } public final void setUsernameParameter(final String usernameParameter) { this.usernameParameter = usernameParameter; } public final String getUsernameParameter() { return usernameParameter; } public final void setPasswordParameter(final String passwordParameter) { this.passwordParameter = passwordParameter; } public final String getPasswordParameter() { return passwordParameter; } } 

使用form-login元素配置filter,但该元素不提供为用户名和密码设置自定义名称的function。

您可以直接配置,如Spring Reference中所述