2014-03-04 2 views
1

다른 역할을 가진 사용자가 있습니다. 사용자의 역할에 따라 제한된보기를 전달하려고합니다. 내 코드에서 역할을 확인하는 항목이 있습니다.사용자 로그인 한 번 사용자 정보 캐싱

위 코드가 작동하려면 currentUser를 인스턴스화해야합니다. 다른 말로하면 나는 현재 로그인 한 사용자의 정보를 잡아야한다. 나는 var user = User.Identity.GetUserId();과 그 밖의 다른 많은 것을 시도했지만 작동 코드를 찾을 수 없다. 나는 어떤 도움을 주셔서 감사합니다. 고맙습니다!

업데이트 :

여기 내 완전한 방법 코드입니다. 위의 예를 확인할 때까지 모두보고 싶을 수도 있습니다.

public ActionResult Index() 
{ 
    var user = User.Identity.GetUserId(); 
    bool isAdmin = UserManager.IsInRole(user, "admin"); 
    bool isEmployee = UserManager.IsInRole(user, "employee"); 
    if (isAdmin) 
    { 
     return View(db.Customers.ToList()); 
    } 
    else 
    { 
     var restricted = db.Customers.Where(c => c.FirstName == "John"); 
     return View(restricted); 
    } 
} 
+0

User.Identity.GetUserId()는 정상적으로 작동합니다. 새로운 MVC5 프로젝트입니까? –

+0

이것은'Authorize' 속성을위한 것입니다. [이 예제] (http://forums.asp.net/t/1791288.aspx)를 보시길 바랍니다. – Jonesopolis

+0

여기 내 전체 코드가 있습니다. 위의 예를 확인할 때까지 모두보고 싶을 수도 있습니다. public ActionResult Index() { var user = User.Identity.GetUserId(); bool isAdmin = UserManager.IsInRole (user, "admin"); bool isEmployee = UserManager.IsInRole (user, "employee"); if (isAdmin) { return 뷰 (db.Customers.ToList()); } else { var restricted = db.Customers여기서 c.FirstName == "John" select c; 되돌아보기 (제한적); } } –

답변

3

[Authorize] 속성은 원하는 제한된 actionController 메소드로 구현되어야합니다. 다음은 그 예입니다.

[Authorize(Roles="Admin")] 
public ActionResult Index() 
     { 
      return View(); 
     } 

이 컨트롤러 방법은 User with Role Admin으로 제한됩니다. 또한, 동일한 액션 컨트롤러 방법은 다른 인증 태그로 두 번 포함될 수 있습니다.

1

나는 어떻게 든 해결책을 찾아 냈습니다. 여기에 작동 코드가 있습니다.

if(User.IsInRole("Admin")) 
{ 
    return View(db.Customers.ToList()); 
} 
else 
{ 
    return View(db.MyUserInfo.ToList()); 
} 
관련 문제