首页 > 解决方案 > 使用种子数据 Asp.net 核心添加管理员

问题描述

我正在使用 Asp.net core 创建一个网站。

我想知道使用种子数据将站点管理员添加到数据库是一种安全的好方法吗?

如果没有,我该怎么做?

标签: c#sqlasp.net-mvcasp.net-core

解决方案


您可以创建一个扩展方法,用于将用户添加到数据库中,并在program.cs文件中或在类中的configure方法中调用方法startup

根据Microsoft 文档,更好的方法是使用它来使用种子数据

程序.cs

public static void Main(string[] args)
{
     var host = CreateWebHostBuilder(args).Build();

    using (var scope = host.Services.CreateScope())
    {
        var services = scope.ServiceProvider;
        try
        {
            var context = services.GetRequiredService<DbContext>();
            DbInitializer.Initialize(context);
        }
        catch (Exception ex)
        {
            var logger = services.GetRequiredService<ILogger<Program>>();
            logger.LogError(ex, "An error occurred while seeding the database.");
        }
    }

    host.Run();
}

配置方法方式

public static void Initialize(this IApplicationBuilder app)
{
    using (var scope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
    {
        var dbContext = scope.ServiceProvider.GetServices<DbContext>();
        //insert data in database
    }
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.Initialize();
}

并且此链接有助于为管理员用户播种


推荐阅读