2011-03-15 4 views
0

지금 권한이 내 asp.net 웹 양식 응용 프로그램에서 완벽하게 작동합니다.특정 기본 구성원 역할이 관리 디렉토리를 보지 못하도록합니까?

모든 인증되지 않은 사용자와 권한이없는 사용자가 admin 디렉토리를 검색하는 것을 절대적으로 막을 수 있는지 궁금합니다.

사용자가 admin 디렉토리에 url을 입력하면 로그인 페이지로 이동하며 (정상적으로 존재하지 않음을 확인합니다!), 성공하면 admin 디렉토리에 액세스 할 수 있습니다. 보안상의 이유로 로그인 페이지로 리다이렉트되는 것을 방지하고 홈 페이지로 리디렉션 할 수 있으므로 입력 한 URL이 유효하다는 보장을받지 못합니다.

+0

시나리오에서 합법적으로 로그인 할 수있는 사용자는 어떻게 관리 페이지에 접속할 수 있습니까? –

+0

admin 디렉토리는 인증되고 권한이 부여 된 (admin 역할) 사용자가 사용할 수 있습니다. 인증되지 않음 = 아니오 인증 된 기본 역할 = 아니오 인증 된 관리자 역할 = 예 – loyalpenguin

답변

1

권한이 정상적으로 작동하므로 코드에서 뭔가해야 할 것입니다. 별도의 마스터 페이지 안에 관리자 폴더에 페이지를 넣어 시도하고이 (관리자) 마스터 페이지의 page_load에 다음을 넣어 : 마스터 페이지가 다음에 호출 될 때, 이것은 좋은 솔루션을 작동하지만 아니지만

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.User.Identity.IsAuthenticated || !Page.User.IsInRole("admin")) 
    { 
     Response.Redirect("to some other page"); 
    } 
} 

콘텐츠 페이지를 사용하면 데이터베이스를 치는 것과 같은 무거운 작업을하는 경우 사용자를 리디렉션하기 전에 이미 발생했습니다.

또 다른 옵션은 위의 코드를 admin 폴더의 모든 콘텐츠와 다른 aspx 페이지에 넣는 것입니다. 또는 관리자 폴더의 페이지에 대한 기본 클래스를 만들고이 역할을 구현하고 기본 클래스에서 인증 검사를 수행 할 수 있습니다.

추신 : - web.config관리자에게 폴더에 액세스하는 사용자를 제한하는 경우 때문에 당신은 또한 web.config에서 폴더에 제한을 제거해야, 그것은 코드 블록을 실행하지 않고 페이지를 로그인하는 사용자를 리디렉션 않습니다.

관련 문제