会话到期后重定向到以前浏览过的网页

时间:2012-02-22 06:54:35

标签: c# asp.net vb.net session

我正在使用asp.net开发网站。在我的网站登录后,我为我的网站需要为已登录用户设置会话。并在每个页面上检查该会话是否为空或具有值,并取决于我重定向到登录页面的值。

我的问题是登录后我想重定向到之前浏览过的网页,我是按照以下方式完成的 -

用于检查会话值的特定页面上的

代码 -

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

有没有其他方法以正确的方式做到这一点?

5 个答案:

答案 0 :(得分: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");
   }

答案 1 :(得分:0)

您可以使用Request.UrlReferrer.ToString()来完成此操作。这将为您提供用户所在的最后一页的名称。那么你可以做一个response.redirect(Request.UrlReferrer.ToString())或类似的东西。抱歉,伪代码。

答案 2 :(得分:0)

保存上一页网址,以便在从其他网页重定向页面时查看状态,并在回发生成时重定向到最后一页..

试试这个:

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.net论坛 - redirect to previous page RSS

答案 3 :(得分:0)

  

有没有其他方法以正确的方式做到这一点?

好吧,我认为有。当ASP.NET提供.NET Forms身份验证时,不要重写身份验证,超时和重定向。如果会话超时,它将自动添加您可以在身份验证代码中处理的“ReturnUrl”。查看this link,了解有关实施表单身份验证的源代码和讨论,并利用其他功能......

答案 4 :(得分: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);


        }
    }

}