【问题标题】:.Net MVC 5 nested isinrole.Net MVC 5 嵌套的 isinrole
【发布时间】: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


【解决方案1】:

代码始终有效,我必须注销并重新登录才能查看更新后的更改权限。

我在单个帐户上对此进行了测试,因此 cookie 没有使用新数据进行更新。

很抱歉给您带来麻烦,感谢您的回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多