private async Task CreateRoles(IServiceProvider serviceProvider)
{
var roleManager = serviceProvider.GetRequiredService>();
string[] roleNames = { "Admin", "Manager", "Member" };
IdentityResult roleResult;
foreach (var roleName in roleNames)
{
var roleExists = await roleManager.RoleExistsAsync(roleName);
if (!roleExists)
{
roleResult = await roleManager.CreateAsync(new IdentityRole(roleName));
}
}
}
2.定义自定义授权策略 在Startup.cs文件的ConfigureServices方法中,可以添加自定义授权策略来限制不同角色的访问权限。例如,以下代码将限制只有管理员访问Admin Dashboard。
services.AddAuthorization(options =>
{
options.AddPolicy("AdminPolicy", policy => policy.RequireRole("Admin"));
});
[Authorize(Policy = "AdminPolicy")]
public IActionResult AdminDashboard()
{
return View();
}
4.将用户分配给角色 可以在Controller类或Action方法上使用授权策略来限制访问。例如,以下代码将限制只有管理员访问Admin Dashboard。
private readonly UserManager _userManager;
private readonly RoleManager _roleManager;
public UserController(UserManager userManager, RoleManager roleManager)
{
_userManager = userManager;
_roleManager = roleManager;
}
public async Task AssignRole(string userId, string roleName)
{
var user = await _userManager.FindByIdAsync(userId);
await _userManager.AddToRoleAsync(user, roleName);
return RedirectToAction("Index");
}
以上是在ASP.net MVC .core 3.