0

WebSecurity我們的模塊檢索密碼功能,以便如果用戶忘記密碼,他可能會檢索密碼,系統會通過電子郵件發送它。我們在MVC4上使用SimpleMembership。我檢查了WebSecurity類,但它沒有「GetPassword」方法。我試圖搜索網絡,而我發現這個實現。WebMatrix.WebData簡單成員資格取回密碼

var user = System.Web.Security.Membership.GetUser(userName); 
password = user.GetPassword(); 

GetPassword發生錯誤,提示「不支持指定的方法」。我還在web.config中添加了以下內容,但即使用戶對象具有值,我仍然遇到了錯誤。

<membership defaultProvider="simple"> 
<providers> 
<clear /> 
<add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider,WebMatrix.WebData" 
enablePasswordRetrieval="true" 
enablePasswordReset="true" requiresQuestionAndAnswer="false"/> 
</providers> 
... 

是否有其他方法檢索用戶的簡單成員資格密碼?我可以在webpages_Membership表上查詢,但密碼已加密。任何人都知道這個解密算法?我嘗試了FormsAuthentication.Decrypt(encryptedpassword);,但是我收到了錯誤「'encryptedTicket'參數的值無效。」儘管傳遞的密碼是加密的。

請幫忙。

+0

只是一個建議,我認爲最好給他們發一封電子郵件,讓他們更改/重置舊密碼而不是顯示舊密碼。 – WannaCSharp

+0

@WannaCSharp這是其他模塊,我們也有。我們的項目有兩個與密碼相關的模塊。 1.忘記忘記密碼的電子郵件的密碼。 2.重置允許用戶重置密碼的密碼。 –

+0

我不認爲有一種方法可以用SimpleMembership以明文方式檢索密碼,因爲它使用單向散列來加密密碼。 – WannaCSharp

回答

2

從webmatrix安全實現中絕對沒有辦法做你正在提出的,獲取純文本密碼。密碼被醃製和散列,你不能反轉這個來獲得純文本密碼,這是一件好事。

Webmatrix提供程序確實提供了您需要的所有功能,以支持創建可以發送到已註冊的電子郵件地址的密碼重置令牌,而不是以純文本格式發送密碼。

+0

我們再補充一點,這是一個不能爲_any_安全認證系統取回明文密碼的通用原則(不僅僅是ASP.NET SimpleMembershipProvider)。 –