根据用户角色加载不同的视图 asp.net core mvc

Load different views dependant on user role asp.net core mvc

我是 asp.netcore MVC 的新手

我想根据用户的角色加载不同的视图,例如

if (role == "Admin")
   return view("admin")
else if (role == "Other")
   return  view("index")

我知道您可以使用 [authorize(Role = ... 和 asp.net 核心身份 api。

我想知道是否有人可以向我指出处理此问题的好教程?

谢谢

这里有一些关于使用 Asp.net Core Identity 来管理用户和角色,以及实现基于角色的身份验证的相关文章。你可以参考他们:

Introduction to Identity on ASP.NET Core

How to work with Roles in ASP.NET Core Identity

Role-based authorization in ASP.NET Core

Adding Role Authorization to a ASP.NET MVC Core Application

然后,在使用 Asp.net 核心身份配置应用程序并添加角色授权后。

在查看页面中,您可以使用Context.User.IsInRole方法来检查当前用户是否在指定的角色中。然后,加载相关内容。代码如下:

    @if (Context.User.IsInRole("Admin"))
    { 
        <li class="nav-item">
            <a class="nav-link text-dark" asp-area="" asp-controller="Role" asp-action="Index">Role</a>
        </li>
    }

在控制器中,根据角色return不同的视图。我们可以使用 HttpContext.User.IsInRole 方法来检查用户是否在指定的角色中。例如:

    public IActionResult Index()
    { 
        if (HttpContext.User.IsInRole("Admin"))
        {
            return View("Privacy");
        } 
        return View();
    }

此外,我们还可以使用UserManager.IsInRoleAsync() Method来查看。

使用上面的示例代码,结果如下: