用戶已經登錄,並希望做一些事情重大,我希望他們能夠重新輸入密碼,這樣我就可以確保他們是已登錄用戶新輸入的密碼。驗證的登錄用戶
我怎樣才能確認這個密碼是用於賬戶持有人的?
很高興知道如何通過ASP.NET身份來完成它,或者如何設置一個存儲過程以對抗AspNetUsers
表或者如何通過實體框架來完成。
用戶已經登錄,並希望做一些事情重大,我希望他們能夠重新輸入密碼,這樣我就可以確保他們是已登錄用戶新輸入的密碼。驗證的登錄用戶
我怎樣才能確認這個密碼是用於賬戶持有人的?
很高興知道如何通過ASP.NET身份來完成它,或者如何設置一個存儲過程以對抗AspNetUsers
表或者如何通過實體框架來完成。
如何確認此密碼是否爲帳戶持有人?
如何通過ASP.NET身份
做重新驗證當前登錄用戶的密碼,爲用戶提供VerifyView輸入密碼,並用下面的方法來檢查用戶是否存在。
var user = await UserManager.FindAsync(User.Identity.Name,VerifyViewModel.Password)
如果找到該用戶,當前請求是從帳戶持有人是相同的。
Membership.ValidateUser是會員框架的早期版本,而不是從ASP.NET身份。
使用Identity框架,您永遠不想直接訪問數據庫。始終使用提供的API。過去幾年來,數據庫結構發生了多次變化,因此引入依賴關係(例如,在數據上下文中)無故添加工作。
有關異步使用情況,請參見已由jd4u
提供的答案。
對於同步識別密碼當前用戶相匹配,您需要首先包括:
using Microsoft.AspNet.Identity;
,因爲這帶來了一些身份框架同步擴展方法。
可以再用Find
檢查的UserManager
這樣的:
var user = UserManager.Find(User.Identity.Name, password);
if (user != null)
{
// It is them!
}
如果用戶不爲空,那麼你有一個匹配的密碼和當前用戶名的。
您還可以使用UserManager.CheckPassword()
擴展功能:
UserManagerExtensions.CheckPassword Method
string id = User.Identity.GetUserId();
var user = UserManager.FindById(id);
if(!UserManager.CheckPassword(user, model.Password))
{
ModelState.AddModelError("Password", "Incorrect password.");
}
您可以使用的UserManager做到這一點:
if(UserManager.PasswordHasher.VerifyHashedPassword("hashedPassword", "password")
!= PasswordVerificationResult.Failed)
{
// password is correct
}
欲瞭解更多信息,請參閱鏈接: How to check password manually in Asp.Net identity 2?
出於某種原因,我希望CheckPassword來做到這一點。它不..這很好,謝謝。 – Bobby