2014-07-22 68 views
1

我正在使用Spring LDAP和Spring安全性的最新版本。另外,我使用基于注释的配置,并且没有XML配置文件。如何使用Spring LDAP和Spring安全性更改密码

我想要实现的是非常基本的,我希望能够允许用户从我的Web应用程序更改密码。

我发现我可以通过DirContext.modifyAttributes执行该请求。这个方法需要两个属性,第一个是当前的userDn,我不知道如何轻松地通过Spring。我很确定有一个功能来获得它。

然后使用密码属性作为第二个参数的修改项目。现在,我如何知道需要应用到用户提供的密码的密码编码?

我从来没有用过Spring LDAP/Security,一个简单的小例子就很棒。现在,我正在测试内存中的ldap,但是我必须在本周末切换到真正的LDAP。

谢谢!

回答

3

您需要使用org.springframework.security.ldap.userdetails.LdapUserDetailsManager的实例,它实现了UserDetailsManager并具有更改用户密码的方法。要在您的非XML配置中实例化它,请执行如下操作:

@Bean 
public UserDetailsService getUserDetailsService() { 
    return new LdapUserDetailsManager(); // TODO give it whatever constructor params it needs 
} 
+0

如何获取我需要提供的上下文? –

+0

@ChristianGoudreau - 请说明您正在讨论的重写'@Override protected UserDetailsS​​ervice userDetailsS​​ervice()'的类。就构造函数需要的'ContextSource'而言,它是'SpringSecurityContextSource'的一个实例,您应该可以将它自动装入'getUserDetailsS​​ervice()'作为参数。 – SergeyB

+0

Uhm,我得到了ContextSource的NoSuchBeanDefinitionException –

相关问题