![](/img/trans.png)
[英]Using WebMatrix.WebData.WebSecurity in a WPF application
[英]WebMatrix.WebData.WebSecurity - How can I get UserName by only having PasswordResetToken
我只是想請求幫助以使我的方案工作? 我想使用PasswordResetToken獲取UserName。
這是我的情景。
當用戶單擊鏈接時。 我將只查詢請求[“token”]以獲取用戶名,然后將允許用戶更改密碼和自動登錄。
這是我的代碼如下:
public ActionResult ChangePassword() { ChangePasswordModel model = new ChangePasswordModel(); string token=string.Empty; try { token = Request["token"].ToString(); int userId = WebSecurity.GetUserIdFromPasswordResetToken(token); if (userId > 0) { //Get the user object by (userid) //??????????????????? //??????????????????? } else { throw new Exception("The change password token has expired. Please go to login page and click forgot password again."); } } catch { model.HasError = true; ModelState.AddModelError("", "The change password token has expired. Please go to login page and click forgot password again."); } return View(model); }
先感謝您。
請看本文末尾的注釋: WebSecurity.GeneratePasswordResetToken方法 。
為方便起見,我會復制相關部分:
如果用戶忘記了密碼,他們可以申請新密碼。 要提供新密碼,請執行以下操作:
- 創建一個密碼重置頁面,其中包含一個用戶可以輸入其電子郵件地址的字段。
- 當用戶在密碼重置頁面中輸入了他或她的電子郵件地址時,請驗證該電子郵件地址是否代表有效用戶。 如果是,則通過調用GeneratePasswordResetToken(String,Int32)方法生成密碼重置令牌。
- 創建指向站點中的確認頁面的超鏈接,該超鏈接將令牌作為查詢字符串參數包含在鏈接的URL中。
- 通過電子郵件將鏈接發送給用戶。 當用戶收到電子郵件消息時,他或她可以單擊該鏈接以調用確認頁面。
- 創建一個確認頁面,該頁面從URL參數中提取令牌,並允許用戶輸入新密碼。
- 當用戶提交新密碼時,請調用ResetPassword(String,String)方法並傳遞密碼重置令牌和新密碼。 如果令牌有效,密碼將被重置。 如果令牌無效(例如,它已過期),則顯示錯誤消息。
突出顯示是我的。 基本上你不需要用戶名。 該框架為您完成了所有繁重的工作。
解決你的評論,我不建議自動登錄用戶。這是一個很好的做法,他們手動記錄檢查這個密碼更改的東西實際上是否有效,而不是發現它不僅僅是下一次。
無論如何,你可以這樣做:
SimpleMembershipProvider provider = (SimpleMembershipProvider)Membership.Provider;
string username = provider.GetUserNameFromId(userId);
參考: GetUserNameFromId 。
我認為WebSecurity.GetUserIdFromPasswordResetToken(string token)
方法WebSecurity.GetUserIdFromPasswordResetToken(string token)
你的需要。
更多信息在這里 。
更新 :
抱歉,我沒有看到您已經在使用該方法...因此,如果您想獲取用戶名並且您正在使用代碼首次遷移Entity Framework,您可以使用以下LINQ表達式獲取用戶名:
string username = yourDbContext.UserProfiles.FirstOrDefault(up=>up.UserId == userId).Username;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.