User.IsInRole(" Admin")不工作Identity 2.0

时间:2016-11-22 16:48:33

标签: asp.net-mvc-4 asp.net-identity-2

我在Razor _layout.cshtml页面中使用User.IsInRole("Admin")来检查经过身份验证的用户的角色并相应地显示菜单。以下是我正在使用的代码:

@if (Request.IsAuthenticated && User.IsInRole("Admin"))
            {
                <li class="@Html.RouteIf("index", "active")">
                    <a href="@Url.Action("Dashboard", "home")" title="Dashboard"><i class="fa fa-lg fa-fw fa-dashboard"></i><span class="menu-item-parent">Analytics Dashboard</span></a>
                </li>
}

现在问题是管理员已成功登录系统,但菜单中没有显示链接。

在谷歌搜索此问题时,我在web.config中进行了以下更改

<system.web>
    <roleManager enabled="true" />
  </system.web>

并在

<remove name="RoleManager" />

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

而不是

@if (Request.IsAuthenticated && User.IsInRole("Supervisor"))
{
}

我用

  

partialView   在   的 _Layout.cshtml

<li>@Html.Partial("_SupervisorPartial")</li>

现在工作正常。

@using Microsoft.AspNet.Identity
@using System.Web.Security;
@if (Request.IsAuthenticated)
{
    var manager = new UserManager<IdentitySample.Models.ApplicationUser> (new Microsoft.AspNet.Identity.EntityFramework.UserStore<IdentitySample.Models.ApplicationUser> (new IdentitySample.Models.ApplicationDbContext()));
    var user = manager.FindById(User.Identity.GetUserId());
    if (user != null && manager.IsInRole(user.Id, "Supervisor"))
    {
        using (Html.BeginForm())
        { //your code
        }
    }
}