1 回答
TA贡献1818条经验 获得超7个赞
这个特定问题的解决方案(尽管我希望找到一个更“通用”的解决方案)是改变实际的贡献者。在您的域模块(或您认为合适的任何地方:您的迁移器或其他),只需执行以下操作:
// Remove the contributor for the module
context.Services.RemoveAll(t => t.ImplementationType == typeof(IdentityDataSeedContributor));
// Add my custom constributor
context.Services.AddTransient<IDataSeedContributor, MyCustomConstributor>();
其中贡献者的实现只是默认的副本:
public class MyCustomConstributor : IDataSeedContributor
{
private readonly IIdentityDataSeeder _identityDataSeeder;
public IdentityDataSeedContributor(IIdentityDataSeeder identityDataSeeder)
{
_identityDataSeeder = identityDataSeeder;
}
public Task SeedAsync(DataSeedContext context)
{
return _identityDataSeeder.SeedAsync(
context["AdminEmail"] as string ?? "my@admin-email",
context["AdminPassword"] as string ?? "my-admin-password",
context.TenantId
);
}
}
请注意,您仍然在这里获得用户名admin...如果您想更改它,您也可以替换实现IIdentityDataSeeder(使用相同的方法,或者更简单的方法Services.Replace,您可以使用它,因为应该只有一种实现IIdentityDataSeeder)并复制您自己的默认用户名,更改搜索到的用户名。
目前,更换模块上的服务似乎是可行的方法。也许在未来的版本中可能存在直接拦截其他模块的初始化阶段的可能性,但我现在还没有看到如何实现。
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报