我在这里有这个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>");
}
}
}
答案 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);
}
}
}
}
即使按下网络浏览器后退按钮,它也会重定向到当前页面。