为什么我不能以种子用户身份登录?

 夜笙_ciel 发布于 2023-01-18 00:02

我正在开发一个新的ASP.NET MVC项目,使用存储在数据库中的个人帐户进行身份验证.这是我的类,每次测试时都会使用示例数据为数据库播种:

public class DevelopmentInitializer : DropCreateDatabaseAlways
{
    protected override void Seed(ApplicationDbContext context)
    {
        base.Seed(context);

        var applicationUserManager = new ApplicationUserManager(new UserStore(context));

        var sampleUserOne = new ApplicationUser { UserName = "SampleUser", Email = "sample@example.com" };
        var result = applicationUserManager.Create(sampleUserOne, "aaaaaa");

        if (!result.Succeeded) 
            throw new Exception();

        context.SaveChanges();
    }
}

Login操作与模板中的操作相同:

    //
    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task Login(LoginViewModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            var user = await UserManager.FindAsync(model.Email, model.Password);
            if (user != null)
            {
                await SignInAsync(user, model.RememberMe);
                return RedirectToLocal(returnUrl);
            }
            else
            {
                ModelState.AddModelError("", "Invalid username or password.");
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

问题的描述非常简单:尝试使用种子用户的凭据登录失败.

具体来说,即使用户出现在数据库中,该FindAsync方法null也会返回- FindByEmailAsync确实找到了种子用户.

但是,创建新帐户有效并允许我登录.

为什么我不能以播种用户身份登录,即使我可以注册一个新帐户并使用该帐户登录?

我怀疑它与密码的散列方式有关,但我不知道如何确认.

我播种帐号错了吗?我不应该ApplicationUserManagerSeed方法中创建单独的吗?如果没有,我该如何才能打电话Create?我试图了解新系统的工作原理,最后锁定我的帐户或用户最终被锁定在已部署的应用程序中.

1 个回答
  • 以下代码:

    var user = await UserManager.FindAsync(model.Email, model.Password);
    

    期望传递userName,而不是电子邮件地址.

    这个简单的改变应该照顾好事情:

    var user = await UserManager.FindAsync(model.UserName, model.Password);
    

    2023-01-18 00:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有