gpt4 book ai didi

c# - 如何在 ASP.NET Core 中创建角色并将其分配给用户?

转载 作者:IT王子 更新时间:2023-10-29 03:50:15 24 4
gpt4 key购买 nike

我正在使用 ASP.NET Core 默认网站模板并将身份验证选择为“个人用户帐户”。如何创建角色并将其分配给用户,以便我可以使用 Controller 中的角色来过滤访问?

最佳答案

我的评论被删除了,因为我提供了指向我回答过的类似问题的链接 here .因此,这次我会更详细地回答。开始吧。

您可以通过在 startup 类中创建一个 CreateRoles 方法轻松地做到这一点。这有助于检查角色是否已创建,如果没有则创建角色;在应用程序启动时。就像这样。

private async Task CreateRoles(IServiceProvider serviceProvider)
{
//initializing custom roles
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 1
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"],
};
//Ensure you have these values in your appsettings.json file
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
await UserManager.AddToRoleAsync(poweruser, "Admin");

}
}
}

然后您可以从 Startup 类的 Configure 方法调用 CreateRoles(serviceProvider).Wait(); 方法。确保将 IServiceProvider 作为 Configure 类中的参数。

在 Controller 中使用基于角色的授权来过滤用户访问:问题 2

您可以像这样轻松地做到这一点。

[Authorize(Roles="Manager")]
public class ManageController : Controller
{
//....
}

您也可以像这样在操作方法中使用基于角色的授权。如果愿意,分配多个角色

[Authorize(Roles="Admin, Manager")]
public IActionResult Index()
{
/*
.....
*/
}

虽然这工作正常,但为了更好的实践,您可能需要阅读有关使用基于策略的角色检查的信息。您可以在 ASP.NET 核心文档中找到它 here ,或者我写的这篇文章here

关于c# - 如何在 ASP.NET Core 中创建角色并将其分配给用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com