2016-11-22 10 views
0

Razor _layout.cshtmlページでUser.IsInRole("Admin")を使用して、認証されたユーザーの役割を確認し、それに応じてメニューを表示します。以下は私が使用しているコードです:User.IsInRole( "Admin")not working ID 2.0

@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> 
} 

ここで、管理者はシステムに正常にログインしていますが、メニューにはリンクが表示されません。

すべてのヘルプは高く評価され

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

<remove name="RoleManager" /> 

に私は私のweb.configファイルに次の変更を行った。この問題をグーグルでいる間!

答えて

0

代わりの

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

私は

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

_Layout.cshtml にpartialView

を使用して、それが今で正常に動作します。

@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 
     } 
    } 
}