2012-02-22 9 views
1

asp.netを使用してWebサイトを開発しています。ログイン後の私のウェブサイトでは、私のウェブサイトの必要性のためにログに記録されたユーザーのセッションを設定します。各ページで、そのセッションがnullか値を持っているか、ログインページにリダイレクトされた値に依存しているかどうかを調べました。セッションが終了した後、以前に閲覧したWebページにリダイレクト

私の問題は、ログインした後、私は以前に閲覧したWebページにリダイレクトしたいということであり、私はセッション付加価値

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

    } 
    else 
    { 
     Response.Redirect(ResolveUrl("~/login.aspx?IsTimeout=1"), true); 
    } 
をチェックするために、特定のページに以下のway-

コードを使用することによってそれをやっ

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

PAGE-ログイン時にコードがあります正しい方法でこれを行うには他の方法ですか?

答えて

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

クエリーストリング変数でも機能します。 スレッドセーフではないため、セッションは時々トリッキーです。 –

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フォーラム - redirect to previous page RSS

0

正しい方法でこれを行う方法はありますか?

私はそこにいると主張します。 ASP.NETが.NETフォーム認証を提供している場合は、認証、タイムアウト、およびリダイレクトを書き換えないでください。セッションがタイムアウトすると、自動的に 'ReturnUrl'が追加され、認証コードで処理できます。 this linkのソースコードとフォーム認証の実装について議論したり、他の機能を活用したりする方法についてはこちらをご覧ください。

0

私の謙虚な意見では、プロジェクトの中央ページで作業していると思います。それによると、私たちはjob.Iがどのように我々はその問題を実装することができます表示するには、いくつかのコードを記述することを行うために私たちのプロジェクトのマスターページよりも、より適切なページを見つけることができません。

// 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); 


     } 
    } 

}