Comment personnaliser les propriétés UsernamePasswordAuthenticationFilter usernameParameter (j_username) et passwordParameter (j_password) lors de l'utilisation de l'espace de noms <http ... />
Spring Security 3? C'est ma compréhension du <http ... />
crée le filtre, mais je ne vois pas comment le personnaliser.Spring Security 3- Comment personnaliser les paramètres de nom d'utilisateur/mot de passe?
Répondre
est la solution Ici, je créé sur la base de la suggestion de axtavt:
configuration Spring:
<beans:bean id="userPassAuthFilterBeanPostProcessor"
class="com.my.package.UserPassAuthFilterBeanPostProcessor">
<beans:property name="usernameParameter" value="username" />
<beans:property name="passwordParameter" value="password" />
</beans:bean>
classe 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;
}
}
Le filtre est configuré à l'aide de l'élément form-login, mais cet élément ne permet pas de définir des noms personnalisés pour le nom d'utilisateur et le mot de passe.
Vous pouvez configurer directement, comme décrit dans Spring Reference
J'utilise l'espace de noms
Vous pouvez signaler un bug au printemps JIRA pour ajouter la configuration requise. – uthark
Cela ressemble à ce que je dois faire. Je vais soumettre une demande de fonctionnalité. –
J'ai soumis une demande de fonctionnalité pour cela: http://jira.springframework.org/browse/SEC-1445 –