복붙노트

[SPRING] Spring Security 3- 사용자 이름 / 비밀번호 매개 변수를 커스터마이징하는 방법은 무엇입니까?

SPRING

Spring Security 3- 사용자 이름 / 비밀번호 매개 변수를 커스터마이징하는 방법은 무엇입니까?

Spring Security 3 네임 스페이스를 사용할 때 UsernamePasswordAuthenticationFilter usernameParameter (j_username) 및 passwordParameter (j_password) 속성을 어떻게 사용자 정의합니까? 가 필터를 만드는 것은 나의 이해이지만 사용자 정의하는 방법을 알지 못합니다.

해결법

  1. ==============================

    1.다음은 axtavt의 제안을 기반으로 작성된 솔루션입니다.

    다음은 axtavt의 제안을 기반으로 작성된 솔루션입니다.

    스프링 구성 :

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

    자바 클래스 :

    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. ==============================

    2.필터는 form-login 요소를 사용하여 구성되지만 해당 요소는 사용자 이름과 비밀번호에 대한 사용자 정의 이름을 설정할 수있는 기능을 제공하지 않습니다.

    필터는 form-login 요소를 사용하여 구성되지만 해당 요소는 사용자 이름과 비밀번호에 대한 사용자 정의 이름을 설정할 수있는 기능을 제공하지 않습니다.

    Spring Reference에 설명 된대로 직접 구성 할 수 있습니다.

  3. from https://stackoverflow.com/questions/2483992/spring-security-3-how-to-customize-username-password-parameters by cc-by-sa and MIT license