2013-09-02 14 views
0

여기에 로그인 내 샘플 코드입니다 : 어떤 이유로그인 후에 어떻게 사용자를위한 역할을 얻을 수 있습니까?

if (WebSecurity.Login(playerModel.WorkerID, playerModel.Password)) 
{ 
       if (Roles.IsUserInRole(User.Identity.Name, "Administrator")) 
       { 
        // display the admin panel 
        ViewBag.Message = "Admin Panel"; 
        return View("Index"); 
       } 
       else 
       { 
        ViewBag.ButtonText = "Log In"; 
        ViewBag.Message = "You are not an Admin user"; 
        return View(); 
       } 
} 

, 내가 처음으로 로그인 할 때, 사용자는 테이블에서 올바른 Role에있다하더라도 "Administrator"에 있지 않습니다. 나는 또한이를 사용하여 시도했다 : 하늘의 배열을 돌려줍니다

Roles.GetRolesForUser(); 

합니다. 로그인하는 사용자와 관련하여 제한이 있다고 가정하고, 포스트 백이 발생하고 역할을 확인할 수 있습니다. 하지만 해결 방법이 있기를 바라고 있습니다. 또는 뭔가 잘못되었습니다.

포스트 백 후에 Roles.IsUserInRoleRoles.GetRolesForUSer 메서드가 올바르게 작동합니다.

답변

0

해결 방법은 다른 페이지로 리디렉션하여 거기를 확인하는 것입니다. 문제는 다른 포스트 백 (방금 작성한 쿠키 읽기)이있을 때까지 쿠키가 역할 정보로 다시 읽히지 않는다는 것입니다.

0

사용을 시도 할 수

HttpContext.Current.User.IsInRole("role") 

나는 역할 보안 클래스가 로그인 후 업데이트되는 경우에 100 % 확실하지 않다 -하지만 나는 그것의 전진 페이지가 새로운 요청이라고 및 도착하지 때까지 베팅 생성됩니다.

+0

이것은 작동하지 않았습니다. 로그인 -> GetRole 호출에 관한 설명서를 찾을 수 없습니다 - 로그인 할 때 GetRole 형식 메서드를 호출 할 수 없다는 의미입니다. 포스트 백을 기다리는 것은 나에게 우스꽝스럽게 보인다. 아무도이 문제를 보지 못했습니까?! 권자 – Faraday

관련 문제