ASP.NET核心身份种子仅创建最后一个用户

朋克

因为这是下面的代码中创建的最后一个用户,所以它仅创建一个ADMIN用户。即使我逐步执行,一切都成功。这与我做异步错误并且没有完成第一个操作有关吗?(创建用户)

  public class DbInitializer
    {
        public static async void Initialize(IApplicationBuilder app)
       // public static void Initialize(IApplicationBuilder app)

……

   if (!roleManager.RoleExistsAsync("Administrator").Result)
        {
            IdRoleResult = await roleManager.CreateAsync(new IdentityRole("Administrator"));
          //  IdRoleResult =  roleManager.CreateAsync(new IdentityRole("Administrator")).Result;


            if (!IdRoleResult.Succeeded)
                throw new Exception("Administrator role wasnt created.");
        }

        if (!roleManager.RoleExistsAsync("User").Result)
        {
            IdUserResult = await roleManager.CreateAsync(new IdentityRole("User"));
            //  IdUserResult =  roleManager.CreateAsync(new IdentityRole("User")).Result;


            if (!IdUserResult.Succeeded)
                throw new Exception("User role wasnt created.");
        }

        //If there are no users, create a test user and test admin. Assign roles
        if (!context.Users.Any())
        {
            var user = new ApplicationUser
            {
                UserName = "[email protected]",
                UserFirstName = "Firstname",
                UserLastName = "LastName",
                Email = "[email protected]",
                UserSchool = "University of Maryland",
                RefMedSchoolId = 1,
                EmailConfirmed = false,
                LockoutEnabled = false
            };
            //  var resultUser = userManager.CreateAsync(user, "Password123!").Result;
            // var resultUserRole = userManager.AddToRoleAsync(user, "User").Result;
              var resultUser = await userManager.CreateAsync(user, "Password123!");
             var resultUserRole = await userManager.AddToRoleAsync(user, "User");

            var admin = new ApplicationUser
            {
                UserName = "[email protected]",
                UserFirstName = "Firstname",
                UserLastName = "LastName",
                Email = "[email protected]",
                UserSchool = "University of Maryland",
                RefMedSchoolId = 1,
                EmailConfirmed = false,
                LockoutEnabled = false
            };
           // var resultAdmin = userManager.CreateAsync(admin, "Password123!").Result;
          //  var resultAdministratorRole = userManager.AddToRoleAsync(admin, "Administrator").Result;

            var resultAdmin = await userManager.CreateAsync(admin, "Password123!");
            var resultAdministratorRole = await userManager.AddToRoleAsync(admin, "Administrator");
恩科西

这段代码应始终保持异步状态,而不是将异步和阻塞调用混为一谈.Result方法签名也应该async Task不是async void

public class DbInitializer {
    public static async Task Initialize(IApplicationBuilder app) {

        //... ...

        if (! await roleManager.RoleExistsAsync("Administrator")) {
            IdRoleResult = await roleManager.CreateAsync(new IdentityRole("Administrator"));
            if (!IdRoleResult.Succeeded)
                throw new Exception("Administrator role wasnt created.");
        }

        if (! await roleManager.RoleExistsAsync("User")) {
            IdUserResult = await roleManager.CreateAsync(new IdentityRole("User"));
            if (!IdUserResult.Succeeded)
                throw new Exception("User role wasnt created.");
        }

        //If there are no test user, create a test user and assign roles
        if (await userManager.FindByNameAsync("[email protected]") == null) {
            var user = new ApplicationUser {
                UserName = "[email protected]",
                UserFirstName = "Firstname",
                UserLastName = "LastName",
                Email = "[email protected]",
                UserSchool = "University of Maryland",
                RefMedSchoolId = 1,
                EmailConfirmed = false,
                LockoutEnabled = false
            };
            var resultUser = await userManager.CreateAsync(user, "Password123!");
            var resultUserRole = await userManager.AddToRoleAsync(user, "User");
        }

        //If there are no test admin, create a test admin and assign roles
        if (await userManager.FindByNameAsync("[email protected]") == null) {
            var admin = new ApplicationUser {
                UserName = "[email protected]",
                UserFirstName = "Firstname",
                UserLastName = "LastName",
                Email = "[email protected]",
                UserSchool = "University of Maryland",
                RefMedSchoolId = 1,
                EmailConfirmed = false,
                LockoutEnabled = false
            };
            var resultAdmin = await userManager.CreateAsync(admin, "Password123!");
            var resultAdministratorRole = await userManager.AddToRoleAsync(admin, "Administrator");
        }

        //...
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.NET核心身份角色,声明和用户

建模asp.net核心身份用户访问

ASP.NET核心身份更改用户名/电子邮件

在ASP.net核心身份(UserManager和SignInManager)中,是否可以立即禁止用户?

如何在视图中获取Asp.net核心身份用户

asp.net核心身份定制用户数据集

Asp.net 核心身份:在 cshtml 中检查用户是否为 admin

如何将dapper与ASP.Net核心身份一起使用?

IdentityServer4 Asp.Net核心身份

植入asp.net核心身份角色

asp.net核心身份声明与属性(效率观点)

Asp.net核心身份使用AspNetUserClaims还是AspNetRoleClaims?

ASP.Net 核心身份验证提供程序

asp.net核心身份cookie重播攻击

Asp.net 核心身份验证

将Azure AD身份验证与asp.net核心身份个人帐户集成在一起

在没有asp的情况下,创建新的cookie之前,请检查声明(电子邮件)。使用ASP.NET核心社交登录的核心身份存储

净核心身份每个用户一个角色

带有 asp.net 核心身份的 Microsoft 身份平台

ASP.NET核心身份和身份服务器

客户端特定声明身份 server4 使用 asp.net 核心身份

IdentityServer4 + Asp.Net核心身份-将身份映射到应用程序数据库用户

IdentityServer4无法使用自定义用户存储添加ASP网络核心身份

怎样用ASP.NET核心另一个用户的索赔

asp.net核心身份中的Multiple&SubDomain的Cookie

为什么要求Asp.Net核心身份验证方案

通过电话号码在Asp.net核心身份中注册和登录

动态声明asp.net核心身份无数据库持久性

Asp.net核心身份成功登录重定向到登录页面