如何在会话到期之前保持同一页面?

时间:2015-09-25 16:19:26

标签: c# asp.net session pageload

我在这里有这个aspx代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MSSQLConnector;
using System.Data;
using System.Data.SqlClient;

namespace SoftwareAnalysisAndDesign.SAD
{
    public partial class AdministratorPage : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            //If user run this page without logging in, it will redirect the user to the login page
            if (Session["adminlogin"] == null)
            {
               Response.Redirect("LoginPage.aspx", true);
            }
        }
    }
}

当会话为空时直接进入管理员页面时,它将转到登录页面。但是当我使用用户名和密码按下登录时,系统会给我一条消息"浏览器有一个重定向循环"。当我按下浏览器后退按钮时,我应该做什么过程使我的AdminPage保持在同一页面上,它只会进入LoginPage,会话为空或会话由Logout事件处理程序终止。或者,如果用户按下Web浏览器后退按钮,系统将提醒用户"您是否要注销"是或否决定。如果没有系统将保留在同一页面上,如果是,会话将被终止,系统将重定向到登录页面。

我的登录页面代码:

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using MSSQLConnector;
using System.Data;

namespace SoftwareAnalysisAndDesign.SAD
{
    public partial class OnlineAppSyss : System.Web.UI.Page
    {
        public void Admin()
        {
            //String decleration
            string adminusername = (this.UserName.Value);
            string adminpass = (this.Password.Value);

            try
            {
                if (adminusername == "admin" && adminpass == "cmpe1234")
                {
                    Session["adminlogin"] = adminusername;
                    Response.Redirect("AdministratorPage.aspx");
                }
                else
                {
                    Response.Write("<script language=javascript>alert('Username and password does not match. Try again');</script>");
                }
            }
            catch
            {
                Response.Write("<script language=javascript>alert('Username and password does not match. Try again');</script>");
            }
    }
}

3 个答案:

答案 0 :(得分:3)

根据以下代码行:public partial class AdministratorPage : System.Web.UI.Page,我认为您在Admin Page

我们想象一下,当Admin Page NOT NULL,然后条件将转到Session["adminlogin"]部分时,您转到else

    if (Session["adminlogin"] == null)
    {
       Response.Redirect("LoginPage.aspx", true);
    }
    else
    {
        Response.Redirect("AdministratorPage.aspx", true);
    }

它会让你回到Admin Page。这就是循环的原因。 解决方案应该是:删除else部分。

  

只是希望我的系统只在会话时进入登录页面   终止

这意味着当Login Page仍然存在时,您阻止用户进入Session。解决方案是:检查Session中的Login Page,然后根据需要重定向到其他网页。

// Check for session existence
if (Session["adminlogin"] != null)
{
    // Redirect to another page
    Response.Redirect("AdministratorPage.aspx", true);
}

答案 1 :(得分:2)

由于您的代码中包含此部分,系统会发出消息“浏览器具有重定向循环”。

<script>

每当您的登录成功时,您将页面重定向到导致重定向循环的同一页面(AdministratorPage.aspx)。 删除其他部分。

答案 2 :(得分:0)

以上是我上述问题的正确代码:

登录页面:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using MSSQLConnector;
using System.Data;

namespace SoftwareAnalysisAndDesign.SAD
{
    public partial class LoginPage: System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //If session is not null  redirect to this page
            if (Session["adminlogin"] != null)
            {
                Response.Redirect("AdministratorPage.aspx", true);
            }
        }
        public void Admin()
        {
            //String decleration
            string adminusername = (this.UserName.Value);
            string adminpass = (this.Password.Value);

            try
            {
                if (adminusername == "admin" && adminpass == "cmpe1234")
                {
                    Session["adminlogin"] = adminusername;
                    Response.Redirect("AdministratorPage.aspx");
                }
                else
                {
                    Response.Write("<script language=javascript>alert('Username and password does not match. Try again');</script>");
                }
            }
            catch
            {
                Response.Write("<script language=javascript>alert('Username and password does not match. Try again');</script>");
            }
        }
    }
}

对于管理页面:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MSSQLConnector;
using System.Data;
using System.Data.SqlClient;

namespace SoftwareAnalysisAndDesign.SAD
{
    public partial class AdministratorPage : System.Web.UI.Page
    {


       protected void Page_Load(object sender, EventArgs e)
        {
            //If session is null, go to login page
            if (Session["adminlogin"] == null)
            {
                Response.Redirect("LoginPage.aspx", true);
            }
        }
    }
}

即使按下网络浏览器后退按钮,它也会重定向到当前页面。