Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server .Net核心标识种子数据:无法使用种子凭据登录_Sql Server_Database_Entity Framework_Asp.net Core_Asp.net Identity - Fatal编程技术网

Sql server .Net核心标识种子数据:无法使用种子凭据登录

Sql server .Net核心标识种子数据:无法使用种子凭据登录,sql-server,database,entity-framework,asp.net-core,asp.net-identity,Sql Server,Database,Entity Framework,Asp.net Core,Asp.net Identity,我有我的初始化设置,一切似乎都正常运行,所有细节都保存到数据库中,但当我尝试通过webapp登录时,每次都失败。当我在登录控制器中运行调试器时,它在命中后返回{Failed}: var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false); 初始化器: public class DbInitialiser

我有我的初始化设置,一切似乎都正常运行,所有细节都保存到数据库中,但当我尝试通过webapp登录时,每次都失败。当我在登录控制器中运行调试器时,它在命中后返回{Failed}:

 var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
初始化器:

public class DbInitialiser : IDbInitialiser
    {
       
        private readonly ApplicationDbContext _db;
        private readonly UserManager<IdentityUser> _userManager;
        private readonly RoleManager<IdentityRole> _roleManager;
        public DbInitialiser(UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager, ApplicationDbContext db)
        {
            _db = db;
            _userManager = userManager;
            _roleManager = roleManager;

        }

        public void Initialise()
        {
            try
            {
                if (_db.Database.GetPendingMigrations().Count() > 0) 
                {
                    _db.Database.Migrate();
                }
            }
            catch (Exception ex)
            {
                
            }

            if (_db.Roles.Any(r => r.Name == "Admin")) return;

            _roleManager.CreateAsync(new IdentityRole("Admin")).GetAwaiter().GetResult();//makes sure this executes before proceceding with anything else
            _roleManager.CreateAsync(new IdentityRole("Manager")).GetAwaiter().GetResult();



            _userManager.CreateAsync(new Employee       
            {
                UserName = "Admin",
                Email = "admin@gmail.com",
                EmailConfirmed = true,
                TwoFactorEnabled = false,
                PhoneNumberConfirmed = true
                //can set other properties, this is for the initial setup
            }, "Abc123!Abc123!").GetAwaiter().GetResult();

            IdentityUser user = _db.Users.Where(u => u.Email == "admin@gmail.com").FirstOrDefault();
            _userManager.AddToRoleAsync(user, "Admin").GetAwaiter().GetResult();


        }
public类DbInitialiser:IDbInitialiser
{
私有只读应用程序dbContext_db;
私有只读用户管理器_UserManager;
专用只读角色管理器(RoleManager);
公共数据库初始化器(UserManager UserManager、RoleManager RoleManager、ApplicationDbContext数据库)
{
_db=db;
_userManager=userManager;
_roleManager=roleManager;
}
公开无效初始化()
{
尝试
{
如果(_db.Database.GetPendingMigrations().Count()>0)
{
_db.Database.Migrate();
}
}
捕获(例外情况除外)
{
}
if(_db.Roles.Any(r=>r.Name==“Admin”))返回;
_roleManager.CreateAsync(新的IdentityRole(“Admin”)).GetAwaiter().GetResult();//确保在处理任何其他操作之前执行此操作
_CreateAsync(新的IdentityRole(“管理器”)).GetAwaiter().GetResult();
_userManager.CreateAsync(新员工
{
UserName=“Admin”,
电子邮件=”admin@gmail.com",
emailconfirm=true,
TwoFactorEnabled=false,
phonenumberconfirm=true
//可以设置其他属性,这是用于初始设置的
},“Abc123!Abc123!”).GetAwaiter().GetResult();
IdentityUser user=_db.Users.Where(u=>u.Email==”admin@gmail.com“”。FirstOrDefault();
_userManager.AddToRoleAsync(user,“Admin”).GetAwaiter().GetResult();
}
(我的员工类扩展了IdentityUser)

我已经检查了其他类似帖子中提到的所有密码要求,因此我知道这与此无关,当我检查SSM时,该用户的所有数据都在aspnetusers中,因此我不确定为什么它不允许我登录到种子管理员用户

当我在登录控制器中运行调试器时,它返回{Failed}

在中,我们可以发现它将根据提供的
用户名检查用户

public virtual async Task<SignInResult> PasswordSignInAsync(string userName, string password,
    bool isPersistent, bool lockoutOnFailure)
{
    var user = await UserManager.FindByNameAsync(userName);
    if (user == null)
    {
        return SignInResult.Failed;
    }

    return await PasswordSignInAsync(user, password, isPersistent, lockoutOnFailure);
}

如果您通过注册页面注册用户,然后使用新注册的帐户登录,效果如何?啊,我太傻了。电子邮件原本是用户名,但我在玩,前几天更改了。谢谢!
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
    returnUrl = returnUrl ?? Url.Content("~/");

    if (ModelState.IsValid)
    {
        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, set lockoutOnFailure: true
        var user = await _userManager.FindByEmailAsync(Input.Email);

        //var istrue = await _userManager.CheckPasswordAsync(user, Input.Password);

        var result = await _signInManager.PasswordSignInAsync(user, Input.Password, Input.RememberMe, lockoutOnFailure: true);


        //var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);