我在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" />
感谢任何帮助!
答案 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
}
}
}