2016-11-22 1 views
0

J'utilise User.IsInRole("Admin") dans ma page Razor _layout.cshtml pour vérifier le rôle des utilisateurs authentifiés et afficher le menu en conséquence. Ce qui suit est le code que je utilise:User.IsInRole ("Admin") ne fonctionne pas Identity 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> 
} 

Maintenant, le problème est que l'administrateur est connecté avec succès dans les systèmes mais pas de lien est affiché dans le menu.

Alors que googler ce problème, je l'ai fait les changements suivants dans mon web.config

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

et

<remove name="RoleManager" /> 

Toute aide est appréciée!

Répondre

0

au lieu de

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

i utiliser

PartialView dans _Layout.cshtml

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

et il fonctionne très bien maintenant.

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