2014-05-19 5 views
0

나는 의심의 여지가있다. VS2013에서 Asp.net mvc5를 사용하고 있습니다. 사용자가 로그인 할 때, 로그인 한 사용자의 사용자 이름은로그인 사용자 역할 : Asp.net MVC5

User.Identity.GetUserId 

사용하여 식별 할 수 있습니다하지만 난 뷰 페이지에서 사용자의 역할을 식별 할 수 없습니다.

나는 다음과 같은 시도 :

@{ 
     var store = new Microsoft.AspNet.Identity.EntityFramework.UserStore<RaspberryPi.Models.ApplicationUser>(new RaspberryPi.Models.ApplicationDbContext()); 
     var manager = new Microsoft.AspNet.Identity.UserManager<RaspberryPi.Models.ApplicationUser>(store); 
     var l = manager.IsInRole(User.Identity.GetUserId, "Moderator"); 
    } 

을하지만 오류가 발생했습니다.

CS1928: 'Microsoft.AspNet.Identity.UserManager<RaspberryPi.Models.ApplicationUser>' does not contain a definition for 'IsInRole' and the best extension method overload 'Microsoft.AspNet.Identity.UserManagerExtensions.IsInRole<TUser>(Microsoft.AspNet.Identity.UserManager<TUser>, string, string)' has some invalid arguments 

어떻게하면됩니까? 당신의 ApplicationUser는 IdentityUser에서

도와주세요, 감사

+0

를 호출 할 필요가 GetUserId기능이 아니라 속성이라는 것이다 (코드를 가정하는 것은 당신이 보여준대로 정확하게는) 그 당신은 보았다? –

+0

오류 게시, plz. –

+0

무례한 말은하지 말고 예외는 아주 자명합니다. – James

답변

1

예외가 꽤 자기가 정말 설명이 필요, 당신은 IsInRole 확장 메서드로 묶어하지 않는 제공하는 매개 변수.

문제 때문에 실제로 오류가 있었다 무엇을

manager.IsInRole(User.Identity.GetUserId(), "Moderator"); 
1

을 유도 하는가?

public class ApplicationUser : IdentityUser 

이것은 cshtml

@{ 
    var context = new RaspberryPi.Models.ApplicationDbContext();   
    if (context.Users.Any(u => u.UserName == User.Identity.Name)) 
    { 
     var store = new Microsoft.AspNet.Identity.EntityFramework.UserStore<applicationuser>(); 
     var manager = new Microsoft.AspNet.Identity.UserManager<applicationuser>(store); 
     ApplicationUser user = manager.FindByName<applicationuser>(User.Identity.Name); 
     if (manager.IsInRole(user.Id, "Moderator") == true) 
     { 
     // Do whatever you want... 
     } 
    } 

에서 작업 또는 당신은 그것에게 간단한 방법을 수행하려는 경우 바로이 작업을 수행해야합니다.

@if (User.IsInRole("Moderator")){ 
} 
+0

문맥 업데이트 ... –

+0

내 게시물의 마지막 부분을보세요. =) 훨씬 좋다 .... –

+0

대단히 감사합니다. –