2012-02-22 5 views
1

asp.net을 사용하여 웹 사이트를 개발 중입니다. 로그인 후 나의 웹 사이트에서 나는 나의 웹 사이트 필요를 위해 기록 된 사용자를 위해 세션을 설정했다. 각 페이지에서 해당 세션이 null인지 또는 값이 있는지 여부와 로그인 페이지로 리디렉션 된 값에 따라 확인했습니다.세션이 만료 된 후 이전에 탐색 한 웹 페이지로 리디렉션

내 문제는 로그인 후 내가 이전에 탐색 웹 페이지로 리디렉션 할 것입니다 그리고 난 세션 부가가치

if (Session["EmployeeID"] != null) 
    { 

    } 
    else 
    { 
     Response.Redirect(ResolveUrl("~/login.aspx?IsTimeout=1"), true); 
    } 
을 확인하기 위해 특정 페이지에서 다음과 같은 방법 -

코드를 사용하여 수행 로그인에

코드는

If Request.QueryString("IsTimeout") IsNot Nothing Then 
    If Request.QueryString("IsTimeout") = "1" Then 
     Login1.DestinationPageUrl = Request.UrlReferrer.ToString() 
    End If 
End If 

이 거기가 페이지 - 올바른 방법으로 이것을하는 다른 방법?

답변

3

나는 올바른 방법에 대해 확실하지 않다 ...하지만 메신저는이 같은 일을 ..

나는 로그인 페이지를 요청하고 리퍼러의 매개 변수를 전달하는 기능을 가지고

protected void RequestLogin() 
    { 
     string OriginalUrl = HttpContext.Current.Request.RawUrl; 
     string LoginPageUrl = "~/LogIn.aspx"; 
     HttpContext.Current.Response.Redirect(String.Format("{0}?ReturnUrl={1}", 
     LoginPageUrl, OriginalUrl)); 
    } 

이곳은 로그인 한 후 리디렉션입니다.

if (this.Request.QueryString["ReturnUrl"] !=null) 
    { 
     this.Response.Redirect(Request.QueryString["ReturnUrl"].ToString()); 
    } 
    else 
    { 
     this.Response.Redirect("Default.aspx"); 
    } 
+0

: 그에 따라, 우리는 있구나 우리가 그 문제를 구현할 수있는 방법을 보여주는 몇 가지 코드를 작성합니다 그렇게하기 위해 더 많은 우리의 프로젝트의 마스터 페이지보다 적합한 페이지를 찾을 수 없습니다 이 경우 세션을 사용하여 returnurl을 저장하십시오. 세션 [ "ReturnUrl"] = HttpContext.Current.Request.RawUrl; – Roshe

+0

querystring 변수에서도 작동합니다. 스레드가 안전하지 않기 때문에 세션이 까다로운 경우가 있습니다. –

0

당신은 달성 할 수 이것은 Request.UrlReferrer.ToString()을 사용하여. 그러면 사용자가 마지막으로 사용했던 페이지의 이름이 표시됩니다. 그러면 response.redirect (Request.UrlReferrer.ToString()) 또는 이와 유사한 것을 할 수 있습니다. 의사 코드를 유감으로 생각합니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     ViewState["RefUrl"] = Request.UrlReferrer.ToString(); 
    } 
    if (Session["EmployeeID"] != null) 
    { 

    } 
    else 
    { 
     object refUrl = ViewState["RefUrl"]; 
     if (refUrl != null) 
      Response.Redirect((string)refUrl); 
    } 
} 

참조 : How to go back to the previous page in ASP.NET 2.0
의 ASP 이전 페이지 URL을 저장

0

이 시도 .. 다시 게시 한 다음 마지막 페이지로 리디렉션 생성 할 때 페이지가 다른 페이지로 리디렉션 때 상태를 볼 수 있습니다 .net forum - redirect to previous page RSS

0

올바른 방법으로 다른 방법이 있습니까?

글쎄요. ASP.NET에서 .NET 폼 인증을 제공 할 때 인증, 시간 초과 및 리디렉션을 다시 작성하지 마십시오. 세션 시간이 초과되면 인증 코드에서 처리 할 수있는 'ReturnUrl'이 자동으로 추가됩니다. this link을보고 양식 인증을 구현하고 다른 기능을 활용하는 방법에 대해 알아보십시오.

0

저의 가장 소소한 의견은 프로젝트의 중앙 페이지에서 작업하는 것입니다. 이있을 때 처리하지 않습니다

// In Login Page .. 
// I used a submit button to figure out the event of my code .. 
protected void ButtonInsert_Click(object sender, EventArgs e) 
{ 
    Session.Add("EmployeeID", 100); // This 100 is just a fixed value .. 

    if (!String.IsNullOrEmpty(Request.QueryString["Red_Page"])) 
    { 
     Response.Redirect(Request.QueryString["Red_Page"]); 
    } 
    else 
    { 
     Response.Redirect("EmployeeDepartment.aspx"); 
    } 
} 

// In Master Page .. 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     // In Master Page 
     if (Session["EmployeeID"] != null) 
     { 
      // Write ur business Code 
     } 
     else 
     { 
      // I stored the Page URL in uery String. 
      // Stroing the URL in a cookie will be also a good alternative solution .. 
      string CurrentURLBeofreTimeout = Request.RawUrl; 
      string LoginURL = "login.aspx"; 
      string newURL = string.Format("{0}?Red_Page={1}", LoginURL, CurrentURLBeofreTimeout); 
      Response.Redirect(newURL); 


     } 
    } 

} 
관련 문제