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

问题描述 投票:1回答:1

我有不同用户的多个索引视图,但是它们共享相同的创建/编辑/详细信息/删除视图。因此,当在“编辑”视图中编辑具有角色客户的用户时,我只想将用户重定向到“客户索引”。

我不认为标签助手可以有多个值,所以我不知道从哪里开始。

asp.net-core asp.net-core-mvc tag-helpers asp.net-core-tag-helpers
1个回答
0
投票

您必须在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

如果您分配管道的功能并添加正确的服务,则可以添加可以安全区分每个客户的例外。希望我能提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.