我找到了 this answer 但它似乎不适合我的 ASP Net Core 项目。
我试图理解的事情:
aspnetroles
),但我不知道使用什么作为 Id
和 ConcurrencyStamp
。 Startup
中?在 Register
下的 AccountController
中? user2role
或 aspnetusers.role_id
)。 最佳答案
您可以通过在启动类中创建一个 CreateRoles
方法来轻松完成此操作。这有助于检查角色是否已创建,如果没有,则创建角色;在应用程序启动时。像这样。
private async Task CreateRoles(IServiceProvider serviceProvider)
{
//adding customs roles : Question 1
var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
var UserManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
string[] roleNames = { "Admin", "Manager", "Member" };
IdentityResult roleResult;
foreach (var roleName in roleNames)
{
var roleExist = await RoleManager.RoleExistsAsync(roleName);
if (!roleExist)
{
//create the roles and seed them to the database: Question 2
roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName));
}
}
//Here you could create a super user who will maintain the web app
var poweruser = new ApplicationUser
{
UserName = Configuration["AppSettings:UserName"],
Email = Configuration["AppSettings:UserEmail"],
};
string userPWD = Configuration["AppSettings:UserPassword"];
var _user = await UserManager.FindByEmailAsync(Configuration["AppSettings:AdminUserEmail"]);
if(_user == null)
{
var createPowerUser = await UserManager.CreateAsync(poweruser, userPWD);
if (createPowerUser.Succeeded)
{
//here we tie the new user to the role : Question 3
await UserManager.AddToRoleAsync(poweruser, "Admin");
}
}
}
然后您可以从 Startup 类中的
await CreateRoles(serviceProvider);
方法调用 Configure
方法。确保您在
IServiceProvider
类中有 Configure
作为参数。编辑:
如果您使用的是 ASP.NET core 2.x,我的这篇文章提供了非常详细的体验。
here
关于c# - 如何向 ASP.NET Core 添加自定义角色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42188927/