[英]FindAsync returns null despite UserManager extension method
我目前正在使用這個出色的指南,目的是將使用SQL成員身份驗證的現有Web應用程序遷移到ASP.NET身份驗證:
不同之處在於我沒有使用Web窗體項目,因此我將其用於MVC 5項目。 這是我的UserManager類,它應該檢查SQL成員資格密碼並在必要時更新它們(有關詳細信息,請參閱上面的鏈接):
public class MyUserManager : UserManager<ApplicationUser>
{
public MyUserManager()
: base(new UserStore<ApplicationUser>(new ApplicationDbContext()))
{
this.PasswordHasher = new SQLPasswordHasher();
}
public class SQLPasswordHasher : PasswordHasher
{
public override string HashPassword(string password)
{
return base.HashPassword(password);
}
public override PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword)
{
string[] passwordProperties = hashedPassword.Split('|');
[SNIP]
問題是 / Account / Login方法似乎沒有使用PasswordHasher擴展。 這是代碼(直接來自MVC 5模板,盡管UserManager對象是上面MyUserManager類的一個實例):
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
[SNIP]
它不會進行身份驗證。 我想我不是唯一一個試圖做這項工作的人。 有什么指針嗎? 對於MVC 5,我是否需要編寫不同的擴展名?
感謝您的任何幫助,您可以提供。
以下是為新的MVC 5項目設置的方法:
IdentityModels.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("ApplicationServices")
{
}
}
public class MyUserManager : UserManager<ApplicationUser>
{
public MyUserManager()
: base(new UserStore<ApplicationUser>(new ApplicationDbContext()))
{
this.PasswordHasher = new SQLPasswordHasher();
}
public class SQLPasswordHasher : PasswordHasher
[etc.]
可以在此處找到SQLPasswordHasher代碼。
AccountController.cs
public class AccountController : Controller
{
public AccountController()
: this(new MyUserManager())
{
}
public AccountController(MyUserManager userManager)
{
UserManager = userManager;
}
public MyUserManager UserManager { get; private set; }
[etc.]
其余部分與上面提到的博客和/或默認MVC 5模板中顯示的完全相同。 一旦連接到具有SQL成員資格信息的上下文,它就像一個魅力。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.