繁体   English   中英

从视图访问用户权限的最佳方法

[英]Best Way To Access User Permissions From View

在我的ASP.NET MVC站点中,我的设置允许用户拥有角色,并且角色具有权限。 通常,这些权限是为控制器设置的。 在我的网站的主导航菜单中,经过身份验证的用户可以查看所有项目,即使它们无权访问该页面也是如此。

目前,我只能在用户通过身份验证的情况下基于菜单进行配置:

@if (Request.IsAuthenticated){ }

我想知道,仅出于为该用户配置菜单的目的,将用户权限传递给视图的最佳方法是什么? 是否有一些常用的方法,还是我必须自己实现? 我没有找到太多信息,但是也许我使用了错误的搜索词。

感谢您的任何建议。

编辑

抱歉,我可能还不够清楚。 这是我的主导航菜单,位于_Layout页面。 另外,分配给角色的权限可由管理员非常配置(他们也可以创建和删除角色),因此检查用户是否处于角色中无法满足我的需求。

您可以使用CommonController创建一个操作,该操作返回包含导航的局部视图。 此局部视图可以具有自己的模型,可以从控制器中填充该模型。 例如,这允许您使用依赖项注入。

该动作可能如下所示:

[ChildActionOnly]
public ActionResult Navigation()
{
    var model = new NavigationModel();
    // populate the model..

    return PartialView("_Navigation", model);
}

您可以在视图中呈现此局部视图(在您的情况下为_Layout.cshtml ),如下所示:

@Html.Action("Navigation", "Common")

在大多数情况下, Request.IsAuthenticated很好。 仅在需要更高级的内容时才使用此功能。

您可以使用Roles类的静态方法IsUserInRole

@if (Roles.IsUserInRole("Admin"))
{
   // ...
}

最好的方法是在视图使用的视图模型上具有一个属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM