我有不同用户的多个索引视图,但是它们共享相同的创建/编辑/详细信息/删除视图。因此,当在“编辑”视图中编辑具有角色客户的用户时,我只想将用户重定向到“客户索引”。
我不认为标签助手可以有多个值,所以我不知道从哪里开始。
您必须在Startup.cs中配置应用程序,通过添加服务行来添加“ RolePolicy”
services.AddAuthorization
在startup.cs中]
services.AddAuthorization(options => {options.AddPolicy("DeleteRolePolicy", policy => policy.RequireClaim("Delete Role", "true")); options.AddPolicy("CreateRolePolicy", policy => policy.RequireClaim("Create Role", "true")); options.AddPolicy("EditRolePolicy", policy => policy.RequireClaim("Edit Role" , "true")); });
在控制器中
[HttpPost] [Authorize(Policy = "EditRolePolicy")] public async Task<IActionResult> Edit(EditViewModel model) { ..... return View(model); }
另外,可以在.cshtml中添加异常,但是从安全性角度考虑,最好将其置于controller内,因为可以直接使用链接访问数据。在.cshtml中>
@inject IAuthorizationService authorizationService <h1>Roles</h1> @if ((await authorizationService.AuthorizeAsync(User, "EditRolePolicy")).Succeeded) { <a asp-controller="Ucontroller" asp-action="Edit" asp-route-id="@role.Id" class="btn btn-primary"> Edit </a> }
_ ViewImports.cshtml中的最终名称
@using Microsoft.AspNetCore.Identity; @using Microsoft.AspNetCore.Authorization; @addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers
要扩展角色,您可以访问此链接Policy-based authorization in ASP.NET Core
如果您分配管道的功能并添加正确的服务,则可以添加可以安全区分每个客户的例外。希望我能提供帮助。