2012-03-22 3 views
3

PrinciplePermissionAttribute 예외가 발생하여 문제가 발생합니다. Load 메서드에서 특성을 가진 페이지는 초기 로그인 직후 예외를 throw합니다.ASP.Net 멤버십 principalpermission 문제

<PrincipalePermission(SecurityAction.Demand, role:="Level1")> _ 
Protected Sub Page_Load(ByVal sender As Object, ByVal e as System.EventArgs) Handles Me.Load 
End Sub 

이 예외는 Request for principal permission failed을 발생시킵니다.

제거하면 페이지가 잘로드되고 동일한 속성을 가진 다른 페이지로 이동할 수 있으며 완벽하게 작동합니다. 또한 회원 시스템 Roles.IsUserInRole() 기능을 사용하면 문제가 없습니다.

처음 로그인 한 후 내 Thread.CurrentPrincipalGenericPrincipal이고 RolePrincipal이 아닌 것으로 나타났습니다. 후속 요청은 제네릭 대신 올바른 유형을 표시합니다. 나는 이것을 PostAuthenticate 이벤트의 Global.asax 파일에 강제로 넣으려고했지만 asp.net은 GenericPrincipal을 설정 한 것 같습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 아니면 Roles.IsUserInRole() 방법을 사용하고 있습니까?

UPDATE
나는 Global.asax에 변경하는 것은 도움이되지 않았는지 볼 수있는 파이프 라인 here에서 일어나는 뭐죠에 약간의 설명을 발견 한 후. 내가 이전에 테스트 해본 프로토 타입 프로젝트를 가지고 있었고 거기에서 그것을 재현 할 수 없었다. 프로젝트 유형과 관련이 있는지 궁금합니다. 프로토 타입은 웹 사이트 프로젝트이고 문제는 웹 응용 프로그램 프로젝트입니다.

GenericPrincipalRolePrincipal으로 변경되었지만 초기 요청이 처리 된 후에 만 ​​이상하게 생각됩니다. 그래서 그것의 열심히 그것이 내 'Page_Load'가 실행되기 전에 그것처럼 일하지 않는다고 말하는 것은 어렵습니다.

답변

0

난 당신이 폼 인증을 사용하는 생각 ...

PrincipalPermission 속성은 Thread.CurrentPrincipal을 확인합니다. Roles.IsUserInRole()은 HttpContext.Current.User를 확인합니다. 따라서 서로 다르면 Application.AuthenticateRequest 이벤트에서 Global.asax 파일에서이 문제를 해결할 수 있습니다.