2010-02-01 7 views
1

따라서 익명 사용자에게만보고 인증 된 사용자로 리디렉션되도록하려는 페이지가 있습니다. 이 같은 :"역방향"권한이 부여 된 페이지가 로그인으로 리디렉션됩니다.

<location path="Login_ForgotUserID.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="?" /> 
      <deny users="*" /> 
     </authorization> 
    </system.web> 
</location> 

문제는 인증 된 사용자가 액세스하려고 할 때, 그것은 로그인 페이지로 리디렉션. 어떻게하면 더 논리적 인 곳으로 보낼 수 있습니까? obtw, .NET v2.0x에 국한되었습니다.

+0

글쎄, web.config를 통해 이것을하는 요령은 SiteMap 컨트롤을 이용하는 것입니다. 예를 들어, 익명 사용자가이 페이지에 있고 Login (LoginStatus 컨트롤)을 클릭하면 페이지에 반환하려고 시도합니다. 그러나 시스템이 요청을 받으면 사용자는 자원을 볼 수있는 권한이 없으므로 로그인 페이지로 보내야합니다. 내가 필요한 것은 내가 리다이렉트하고있는 리소스를 테스트하여 사용자가 액세스 할 수 있는지, 그리고 다르게 처리하지 않는지를 확인하는 방법이다. –

+0

좋아요, 작동하는 방법은 다음과 같습니다 : - SiteMap에는 사용자가 갈 수있는 링크 목록이 있습니다. 이 목록은 web.config에 설정된 사용 권한에 의해 삭제됩니다. - 익명에서 인증까지 일반적인 흐름입니다. web.config에서이 작업은 "거부"로 수행됩니다. 그런 다음 "허용 *"이 인증되지 않은 사용자를 차단합니다. - 사용자가 액세스 권한이없는 페이지로 이동하려고하면 사이트에서 해당 페이지를 로그인 페이지로 리디렉션합니다. 그래서 문제는 ASP에서 "권한이 없으면 로그인 페이지로 가야합니다"라고 가정합니다. 모든 경우에 항상 사실 인 것은 아닙니다. 나는 그 주위에 방법이 필요해. –

+0

보안 트리밍은이 시나리오 하에서도 메뉴 링크를 숨 깁니다. 따라서 URL에 직접 액세스 할 수 있습니다. 맞습니까? – Greg

답변

0

web.config에서이 작업을 수행하는 방법을 잘 모릅니다. Login_ForgotUserID.aspx 페이지에서 사용자가로드/렌더링 전에 인증되었는지 확인하는 것이 좋습니다. 사용자가 인증 된 경우 무해한 가정 또는 기본 페이지로 리디렉션합니다.

2

페이지의 Page_Load 이벤트에 if (Request.IsAuthenticated) { Response.Redirect ...을 추가하는 것만으로 왜 구성 할 필요가 없습니까? 불행히도 로그인을 처리 할 수있는 단일 페이지 만 구성 할 수 있으며 액세스 권한이없는 사용자는 로그인 할 수 있습니다. 또한 로그인시 ReturnURL을 확인하여 페이지에서 왔는지 사용자가 Authenticated인지 확인할 수 있습니다.하지만 나에게는 이상한 해결책입니다.

+0

이것은 완전히 맞습니다. web.config에서이 작업을 수행 할 방법이 없으므로이를 처리 할 코드를 작성해야합니다. ** config 파일의 고객 설정 섹션이나 앱 키 섹션을 통해 부분적으로 제어 할 수 있습니다. – Greg

1

그래, 대답은 렌더링하기 전에 메뉴를 수정해야한다는 것입니다. authorisation/SecurityTrimming을 변경하여 SiteMap을 처리하는 방법을 찾지 못했습니다. 그래서 소스에서 SiteMap을 수정하기로 결정했고 MenuItems를 수정하는 방법을 발견했습니다 as they were bound. 이것은 가장 효과적인 코스로 보였다.

0

여기서도 역할을 볼 수 있습니다. 당신은, "인증"말 역할에 기본적으로 모든 사용자를 추가한다면

당신은 할 수 :이 순서대로 처리로

<location path="Login.aspx"> 
    <system.web> 
    <authorization> 
     <deny roles="authenticated" /> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 
</location> 

당신은 거부 목록에 fisrt되어 있는지 확인해야합니다 , 첫 번째 일치 항목이 사용됩니다.

  1. custom sitemap provider는 사용자가 인증되면이 페이지가 트리 뷰 컨트롤에 반환되지 않도록 쓰기 :

    다른 두 방법은 비슷한 일을합니다.

  2. treeview 컨트롤에 대해 control adapter을 작성하여 이러한 페이지가 렌더링되지 않도록하십시오.
관련 문제