2010-03-20 43 views
7

Làm thế nào để bạn tùy chỉnh các thuộc tính UsernamePasswordAuthenticationFilter usernameParameter (j_username) và passwordParameter (j_password) khi sử dụng không gian tên Spring Security 3 <http ... /> Spring Security 3? Đó là sự hiểu biết của tôi khi <http ... /> tạo bộ lọc, nhưng tôi không thấy cách tùy chỉnh bộ lọc đó.Bảo mật mùa xuân 3- Cách tùy chỉnh thông số tên người dùng/mật khẩu?

+1

Tôi đã gửi yêu cầu tính năng cho việc này: http://jira.springframework.org/browse/SEC-1445 –

Trả lời

4

Dưới đây là giải pháp tôi tạo ra dựa trên đề nghị axtavt của: Cấu hình

mùa xuân:

lớp
<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; 
    } 

} 
1

Bộ lọc được định cấu hình sử dụng yếu tố form-login, nhưng yếu tố đó không cung cấp khả năng đặt tên tùy chỉnh cho tên người dùng và mật khẩu.

Bạn có thể cấu hình trực tiếp, như mô tả trong Spring Reference

+0

Tôi đang sử dụng không gian tên cho hầu hết tất cả cấu hình của mình nên tôi không muốn chuyển khỏi sử dụng nó. Tôi đã hy vọng có một số cách sạch sẽ để cấu hình nó và vẫn sử dụng cấu hình . –

+0

Bạn có thể báo cáo lỗi trong JIRA mùa xuân để thêm cấu hình được yêu cầu. – uthark

+0

Âm thanh như thế là những gì tôi cần làm. Tôi sẽ gửi yêu cầu tính năng. –

Các vấn đề liên quan