代码之家  ›  专栏  ›  技术社区  ›  Taylor Leese

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

  •  7
  • Taylor Leese  · 技术社区  · 14 年前

    使用时如何自定义用户名密码验证过滤器用户名参数(j_用户名)和密码参数(j_密码)属性 <http ... /> Spring Security 3命名空间?这是我的理解 <HTTP…/gt; 创建筛选器,但我看不到如何自定义它。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Taylor Leese    14 年前

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

    弹簧配置:

    <beans:bean id="userPassAuthFilterBeanPostProcessor"
        class="com.my.package.UserPassAuthFilterBeanPostProcessor">
        <beans:property name="usernameParameter" value="username" />
        <beans:property name="passwordParameter" value="password" />
    </beans:bean>
    

    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;
        }
    
    }
    
        2
  •  1
  •   uthark    14 年前

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

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