c# - 使用种子数据 Asp.net 核心添加管理员
问题描述
我正在使用 Asp.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();
}
并且此链接有助于为管理员用户播种
推荐阅读
- node.js - 无法安装浏览器同步
- c# - .csproj 的 InstallShield 主要输出具有 apphost.exe 文件
- docker - Docker 查找 auth.docker.io 连接被拒绝错误 17
- react-native - 如何正确使用 react-native 子模块?
- javascript - js中有哪些方法可以调用modules文件夹?
- python - python RSOME中决策变量数组和整数列表的元素乘法
- python - 动画 Python Kivy
- flutter - 未成功将事件添加到日历
- python - 如何使用 XOR 运算符比较二进制字符串的 2 个输入列并将输出分配给新列(熊猫)
- aws-lambda - AWS SQS 列出来自 SDK 的触发器