【发布时间】:2017-08-06 07:25:48
【问题描述】:
我正在使用 Asp.Net Core 1.1.1 及其授权/身份验证系统创建一个 Web 应用程序。
在我的 startup.cs 文件中,我已经配置了我需要的各种策略:
public void ConfigureServices(IServiceCollection services)
{
servizi.AddAuthorization(options =>
{
options.AddPolicy("Insert", policyBuilder => policyBuilder .RequireClaim("AllowInsert"));
options.AddPolicy("Update", policyBuilder => policyBuilder .RequireClaim("AllowUpdate"));
options.AddPolicy("Delete", policyBuilder => policyBuilder .RequireClaim("AllowDelete"));
});
}
然后在控制器中,我将声明分配给一个角色(管理员角色):
public async Task<IActionResult> AssignClaimstoAdminRole()
{
await _roleManager.AddClaimAsync(await _roleManager.FindByNameAsync("Administrator"), new Claim("AllowInsert", "true"));
await _roleManager.AddClaimAsync(await _roleManager.FindByNameAsync("Administrator"), new Claim("AllowUpdate", "true"));
await _roleManager.AddClaimAsync(await _roleManager.FindByNameAsync("Administrator"), new Claim("AllowDelete", "true"));
await _loginManager.RefreshSignInAsync(await _userManager.FindByNameAsync(User.Identity.Name));
return RedirectToAction("SomeAction", "MyController");
}
最后我通过注入授权服务保护了我的视图:
@using Microsoft.AspNetCore.Authorization
@inject IAuthorizationService AuthorizationService
@if (await AuthorizationService.AuthorizeAsync(User, "Insert"))
{
<i role="submit" class="fa fa-floppy-o fa-2x"></i>
}
我的问题是: 我想检索在 startup.cs 中创建的策略的列表,以便最终我可以构建一个页面来添加其他用户/角色,为他们分配系统中已经存在的一个或多个策略。
是否有一个对象可以公开先前添加的策略集合? 提前致谢!
【问题讨论】:
标签: asp.net authentication authorization