【发布时间】:2015-09-23 19:18:04
【问题描述】:
使用 Identity 2.0 的 ASP.NET C# MVC 5 (.NET 4.5.1) 是否可以嵌套 IsInRole()。我这样做是因为我想只对Admin 角色中的人隐藏一个菜单元素,最重要的是,我想隐藏一个仅指向Developer 角色中的人的链接。这样,只有开发人员可以添加角色。
例如:
@if(Request.IsAuthenticated && User.IsInRole("Admin"))
{
<li>
<div class="dropdown">
<div class="dropdown-toggle" id="adminMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Admin
<span class="caret"></span>
</div>
<ul class="dropdown-menu" aria-labelledby="userMenu">
@if(User.IsInRole("Developer"))
{
<li>@Html.ActionLink("RolesAdmin", "Index", "RolesAdmin")</li>
}
<li>@Html.ActionLink("UsersAdmin", "Index", "UsersAdmin")</li>
<li>@Html.ActionLink("GroupsAdmin", "Index", "GroupsAdmin")</li>
</ul>
</div>
</li>
}
有什么想法吗?还是我接近这个错误?
谢谢
【问题讨论】:
-
这对我来说似乎很好......它没有像你期望的那样工作吗?
-
这对我来说看起来不错。它是否按您的需要工作?
-
只有开发者角色的用户不会执行此代码
-
您需要在请求通过身份验证时将“Admin”角色附加到“Developer”。角色=“开发人员,管理员”。你在使用 FormsAuthentication 吗?
-
它没有按预期工作。我扩展了我的身份管理器以合并组。我检查了表格,它显示我的用户同时具有管理员和开发人员角色。
ActionLink()仍然没有显示。至于web表单,我没有选择Web Forms,我选择了MVC,所以我不这么认为。
标签: c# asp.net asp.net-mvc-5 .net-4.5 asp.net-identity-2