为了账号安全,请及时绑定邮箱和手机立即绑定

使用Identity时,如何在没有注册页面的情况下注册第一个用户?

使用Identity时,如何在没有注册页面的情况下注册第一个用户?

C#
江户川乱折腾 2022-01-09 10:59:23
您如何在可以管理新数据库的新数据库中创建第一个用户?例如 Django 有一个命令行实用程序来创建一个超级用户,它是如何在 ASP.Net Identity 中完成的?
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您必须编写自己的种子逻辑来播种默认用户和角色。查看 Jeff Fritz 的CoreWiki 存储库以获取示例。


这是相关的部分。请注意如何多次调用它而不必担心创建多个帐户——这很重要,因为每次运行应用程序时都会调用它。


public static async Task Seed(UserManager<CoreWikiUser> userManager, RoleManager<IdentityRole> roleManager)

{

    var administratorsRole = "Administrator";

    var defaultAdminUsername = "admin@corewiki.com";

    var defaultAdminPassword = "Admin@123";


    var adminRoleExists = await roleManager.RoleExistsAsync(administratorsRole);


    if (!adminRoleExists)

    {

        var role = new IdentityRole(administratorsRole)

        {

            Name = administratorsRole

        };


        var roleResult = await roleManager.CreateAsync(role);

    }


    // If there are no users who are currently an admin, then create a default admin user

    var anyAdminUsers = await userManager.GetUsersInRoleAsync(administratorsRole);


    if (!anyAdminUsers.Any())

    {

        var defaultAdminUserExists = await userManager.FindByEmailAsync(defaultAdminUsername);


        if (defaultAdminUserExists == null)

        {

            var defaultAdminUser = new CoreWikiUser

            {

                UserName = defaultAdminUsername,

                Email = defaultAdminUsername

            };


            var userResult = await userManager.CreateAsync(defaultAdminUser, defaultAdminPassword);


            if (userResult.Succeeded)

            {

                var result = await userManager.AddToRoleAsync(defaultAdminUser, administratorsRole);

            }

        }

    }

}

然后,您可以从 Startup 调用它,ConfigureServices()也可以在Main()运行虚拟主机之前直接在您的网络主机中调用它,如果您的种子方法是async.


如果传递了命令行参数,另一种方法是在 Main() 中运行它。例如。dotnet run seed.


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号