2012-10-17 41 views
0

目前,我有一個MVC 3應用程序,它需要安全答案是正確的,當用戶忘記密碼。MVC 3會員服務resetpassword問題

不過,我希望有一個系統管理員能夠重置所有用戶的密碼,不知道安全答案。

這個任何可能的解決方案?

+2

你能證明你目前擁有的代碼?您對管理員頁面有什麼設置?更多細節將會有所幫助。 – danseery

回答

0

我結束了使用兩個不同的供應商爲這個解決方案。 兩個供應商被添加到應用程序的web.config文件:

<membership> 
    <providers> 
    <clear/> 
    <add name="ProviderRequiredAnswer" ....... 
     enablePasswordReset="true" requiresQuestionAndAnswer="true" ...... /> 
    <add name="ProviderNoRequiredAnswer" ...... 
     enablePasswordReset="true" requiresQuestionAndAnswer="false" ...... /> 

    </providers> 
</membership> 

當普通用戶忘記密碼,需要重置它,我會通過第一供應商獲得用戶:

用戶的MembershipUser = Membership.Providers [ 「ProviderRequiredAnswer」] .GetUser(model.userToReset,FALSE);

串autoGenPass = userToReset.ResetPassword(model.PasswordAnswer);

bool resetPasswordSucceeded = userToReset.ChangePassword(autoGenPass,model.NewPassword);

的MembershipUser用戶= 成員:

在另一方面,如果一個系統管理員,誰不具備安全答案需要重置一個用戶的密碼,我將使用第二提供商處獲取用戶。提供商[ 「ProviderNoRequiredAnswer」] .GetUser(model.userToReset,FALSE);

串autoGenPass = userToReset.ResetPassword();

bool resetPasswordSucceeded = userToReset.ChangePassword(autoGenPass,model.NewPassword);

+0

這是一個有趣的解決方案。我甚至不知道你可以使用這樣的多個提供商。 –