2010-06-10 72 views
6

我在C#(ASP.NET)中編寫代碼並使用Forms身份驗證。
我想知道哪些是最好的方法來更改用戶密碼,而不使用asp:ChangePassword控件。
我不想使用重置密碼方法。
我只想抓取我的文本框中的密碼,並將其替換爲舊密碼。
請注意,我用了passwordFormat是了passwordFormat =「散列」
某些代碼段將是有益的

編輯:在ASP.NET Forms身份驗證中更改用戶密碼

在我的web.config,我已經設置enablePasswordRetrieval =「假」
我用下面的方法

var myUser = Membership.GetUser(userID); 
bool isChangeSuccess = myUser.ChangePassword(
    myUser.GetPassword(), 
    ActivateUserPasswordText.Text.Trim()); 

它給我的錯誤,

此會員供應商尚未將 配置爲支持密碼 檢索。

可以做些什麼來解決這些問題? 我真的很喜歡我的PasswordFormat自己哈希。

問候,
納文何塞

回答

18

把它解決了。感謝我的開發人員。

var myUser = Membership.GetUser(userID); 
bool isChangeSuccess = myUser.ChangePassword(
    myUser.ResetPassword(), 
    ActivateUserPasswordText.Text.Trim()); 

不能說我很喜歡它。
我以爲ResetPassword()會返回一個布爾值。

+0

它返回一個隨機生成的新密碼的字符串http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser。 resetpassword.aspx – 2013-01-17 14:58:23

+1

@JPHollmons:我說我以爲:) – naveen 2013-01-17 17:40:13

2

只爲密碼的哈希值通常是由asp.net成員資格提供存儲,因此無法獲取原始密碼。可以通過配置來改變這種行爲,但不建議這樣做。
只需在更改密碼時要求用戶輸入舊密碼。您可以在User.ChangePassword方法中使用用戶輸入的舊密碼,它應該可以正常工作。

+0

我的意圖是爲丟失的密碼創建檢索密碼 – naveen 2010-06-11 07:28:51

1

此會員供應商尚未配置爲支持密碼檢索。

上面的消息顯示是因爲您的密碼格式爲鹽,因此您無法獲取用戶的密碼。如果您想這樣做,請更改密碼格式並重試。

+0

感謝dileep。我對如何檢索舊密碼感到好奇,而'ChangePassword'確實需要使用舊密碼作爲參數。 – naveen 2012-04-09 02:07:49

1

在關閉的機會有人使用ApplicationUser而不是成員 - 因爲我是因爲我不想設定一個會員提供商 - 您可以更改密碼,這種方式:

  Dim manager = New UserManager() 
      Dim userChange As ApplicationUser = manager.FindById(IDUser) 

      userChange.PasswordHash = manager.PasswordHasher.HashPassword(newPassword.Value) 
      Dim val As Object = manager.Update(userChange) 

希望這有助於有人

相關問題