2010-11-30 2 views
3

나는 사용자가 너무 오래 페이지에 앉아 있기 때문에 데이터를 잃어 가고있는이 ASP.net의 웹 양식에 인증 요청을 차단하기 위해, 다음을 수행 다시 내가 원하는에 로그인하라는 메시지가 1) 로그인 페이지로 리디렉션하는 대신 현재 요청을 취소하고 사용자에게 로그인 할 수있는 팝업 대화 상자를 제공하려고합니다.어떻게

2) 로그인이 성공하면 모든 데이터가 그대로 유지 된 채 사용자가 양식으로 다시 보내주기를 바랍니다. (요청을 다시 양식으로 보내지 않고도 처리 할 수 ​​있다면 더 좋겠지 만 선택 사항입니다.)

어떻게 이러한 인증 요청을 가로 채고 사용자에게 팝업 로그인을 표시 할 수 있습니까?

ASP.net 폼 인증을 사용하고 있습니다.

+0

1) "요청 취소"란 무엇을 의미합니까? 요청이 서버 측이면 실제로 취소 할 수 없습니다. –

+0

오른쪽, 취소는 올바른 단어가 아닙니다. 폼 데이터가 플러시되는 것을 원하지 않습니다. – MAW74656

답변

2

당신은 더 구체적으로 필요

Global.asax에

으로하여 Application_AuthenticateRequest에이 이벤트를 가로 챌 수 있지만, 당신은 ASP.NET을 사용하는 양식 인증?

추가 :

이 시도하고 당신이 마스터 페이지를 사용하고 웹 양식

string cookieName = FormsAuthentication.FormsCookieName; 

    HttpCookie authCookie = Context.Request.Cookies[cookieName]; 

    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 

    if (authTicket.UserData == "Anonymous") 
    { 

     //Throw the login popup 

    } 
    else 
    { 

     //Some Code 

    } 
+0

예, 있습니다. 죄송합니다, 나는 그것을 추가했습니다. 그 사건을 가로 챌 수있는 방법을 자세히 설명해 주시겠습니까? global.asax에서 처리되지 않은 예외 처리가 있으므로 약간 사용했지만 그 이벤트는 사용하지 않았습니다. – MAW74656

+0

web.config에 다음과 같은 내용이 있다고 가정합니다. , 맞습니까? –

+0

인증 섹션이 있지만 기본값이 비어 있습니다. – MAW74656

0

에서

void Application_AuthenticateRequest(object sender, EventArgs e) 
{ 

    if (HttpContext.Current.User == null) 
    { 
     FormsAuthenticationTicket ticket = new 
         FormsAuthenticationTicket(1, "Anonymous", DateTime.Now, DateTime.Now.AddMinutes(30), false, "Anonymous"); 

     string encryptedTicket = FormsAuthentication.Encrypt(ticket); 

     HttpCookie cookie = 
      new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 

     Response.Cookies.Add(cookie); 

     FormsIdentity id = new FormsIdentity(ticket); 

     System.Security.Principal.GenericPrincipal principal = new System.Security.Principal.GenericPrincipal(id, ticket.UserData.Split(new char[] { '|' })); 

     Context.User = principal; 
    } 

} 

Global.asax에

에서 나에게

회신? 별도의 로그인 페이지가 아닌 로그인이 필요할 때 리디렉션 할 수 있습니다. 그런 다음 마스터 페이지의 로그인 코드에서 적절한 독립형 로그인 페이지로 리디렉션할지 여부 또는 로그인 div를 팝업으로 표시할지 여부를 결정했습니다.

+0

2 단계의 중첩 된 마스터 페이지를 사용하고 있지만 인증 요청 (중요한 부분) 전에 webform에 있던 데이터는 처리하지 않습니다. 팝업 div는 부분적으로 다시 로그인 할 수 있습니다. – MAW74656

+0

로그인 div 팝업 만들기에 대해 자세히 설명해 주시겠습니까? – MAW74656