2014-07-22 65 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 –

相關問題