首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从视图访问用户权限的最佳方法

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

Stack Overflow用户
提问于 2014-01-29 19:53:01
回答 3查看 1.4K关注 0票数 5

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

目前,我只能根据用户身份验证配置菜单:

代码语言:javascript
复制
@if (Request.IsAuthenticated){ }

我想知道,将用户的权限传递给视图的最佳方式是什么,只是为了配置该用户的菜单?有什么常见的方法吗?还是我必须自己来实现?我没有在上面找到多少信息,但也许我用错了搜索词。

谢谢你的建议。

编辑

对不起,我可能说得不够清楚。这是我的主导航菜单,在_Layout页面。另外,分配给角色的权限是管理员非常可配置的(它们还可以创建和删除角色),因此检查用户是否在角色中将不能满足我的需要。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-29 20:13:17

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

该行动可能如下所示:

代码语言:javascript
复制
[ChildActionOnly]
public ActionResult Navigation()
{
    var model = new NavigationModel();
    // populate the model..

    return PartialView("_Navigation", model);
}

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

代码语言:javascript
复制
@Html.Action("Navigation", "Common")

在大多数情况下,Request.IsAuthenticated是很好的。只有当你需要更先进的东西时才用这个。

票数 3
EN

Stack Overflow用户

发布于 2014-01-29 20:09:51

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

代码语言:javascript
复制
@if (Roles.IsUserInRole("Admin"))
{
   // ...
}
票数 1
EN

Stack Overflow用户

发布于 2014-01-29 19:55:18

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21441215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档