Asp.net core 在ASP.NET Core MVC中具有多个索引视图时如何重定向

Asp.net core 在ASP.NET Core MVC中具有多个索引视图时如何重定向,asp.net-core,asp.net-core-mvc,tag-helpers,asp.net-core-tag-helpers,Asp.net Core,Asp.net Core Mvc,Tag Helpers,Asp.net Core Tag Helpers,我有多个针对不同用户的索引视图,但它们共享相同的创建/编辑/详细信息/删除视图。因此,在编辑视图中编辑角色为customer的用户时,我只想将管理员重定向到Customers索引 我认为标记帮助程序不能有多个值,因此我不知道从何处开始。您必须在Startup.cs中配置应用程序。通过添加一行服务添加“角色策略” 服务.添加授权 在startup.cs中 //more preferences.. private bool AuthorizeAccess(AuthorizationHandlerCo

我有多个针对不同用户的索引视图,但它们共享相同的创建/编辑/详细信息/删除视图。因此,在编辑视图中编辑角色为customer的用户时,我只想将管理员重定向到Customers索引


我认为标记帮助程序不能有多个值,因此我不知道从何处开始。

您必须在Startup.cs中配置应用程序。通过添加一行服务添加“角色策略”

服务.添加授权

在startup.cs中

//more preferences..
private bool AuthorizeAccess(AuthorizationHandlerContext context)
    {
        return context.User.IsInRole("Admin") &&
                context.User.HasClaim(claim => claim.Type == "Edit Role" && claim.Value == "true") ||
                context.User.IsInRole("Super Admin");
    }
//AddAuthorization..
 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"));  
//For more preferences you can use 
 options.AddPolicy("EditRolePolicy",
                 policy => policy.RequireAssertion(context =>AuthorizeAccess(context)));

});
内部控制器

 [HttpPost]
 [Authorize(Policy = "EditRolePolicy")]
    public async Task<IActionResult> Edit(EditViewModel model)
    {
       .....

           return View(model);
     }
要展开角色,您可以访问此链接

如果您划分管道的权限并添加正确的服务,您将能够添加能够安全区分每个客户的异常。
希望我能帮忙。

非常感谢您的详细回复,非常感谢!!
 @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>

   }
@using Microsoft.AspNetCore.Identity;
@using Microsoft.AspNetCore.Authorization;

@addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers