在 ASP.net 中管理用户会话
本文关键字:用户 会话 管理 ASP net | 更新日期: 2023-09-27 18:33:36
我是 ASP.net 新手,这是我的第一个WebApp。我在应用程序中遇到有关会话的问题,当我注销并按浏览器背面按钮时,它会再次将我推入应用程序。我正在使用如下代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["LiveUser"] != null)
{
}
else
{
Response.Redirect("InvalidForm.aspx");
}
}
protected void ButtonLogOut_Click(object sender, EventArgs e)
{
Response.Redirect("LoginForm.aspx");
Session["LiveUser"] = null;
}
按钮注销 :
<asp:Button ID="ButtonLogOut" runat="server" CssClass="btnLogout"
Text="Log Out" OnClick="ButtonLogOut_Click" />
登录按钮代码隐藏:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string query = "select UserActive from nWorksUser where Username='" + this.txtUsername.Text + "' and _password='" + Encrypt(this.txtPassword.Text) + "';";
MySqlCommand cmd = new MySqlCommand(query, conn);
MySqlDataReader rdr;
conn.Open();
rdr = cmd.ExecuteReader();
string ActiveUser = "";
while (rdr.Read())
{
ActiveUser = rdr.GetString("UserActive");
}
conn.Close();
if (ActiveUser == "true")
{
if (trylogin(txtUsername.Text, txtPassword.Text) == true)
{
Session.Add("LiveUser",GetUsername());
Response.Redirect("AttendanceForm.aspx");
}
else
{
lableMessage.Text = "Wrong Credentials. Please try again";
}
}
else
{
conn.Open();
query = "select UserActive from nWorksUser where Username='" + this.txtUsername.Text + "';";
MySqlCommand cmd1 = new MySqlCommand(query, conn);
MySqlDataReader rdr1;
rdr1 = cmd1.ExecuteReader();
ActiveUser = "";
while (rdr1.Read())
{
ActiveUser = rdr1.GetString("UserActive");
}
conn.Close();
if (ActiveUser == "true")
{
lableMessage.Text = "Wrong Credentials. Please try again";
}
else if (ActiveUser == "")
{
lableMessage.Text = "User is anavailable..!!";
}
else
{
lableMessage.Text = "User is expired..!!";
}
}
如果您在注销后单击浏览器的后退按钮,预期的行为是要求用户名/密码不要在应用程序中再次推送。解决方案应该是什么?
注销
点击事件应该更像这样:
protected void ButtonLogOut_Click(object sender, EventArgs e)
{
Session.Clear();
Session.Abandon();
Response.Redirect("LoginForm.aspx");
}
重定向需要是最后一个。
另外,请注意,asp.net 回发事件(按钮单击)对浏览器后退按钮不友好,因为它们将尝试再次发布表单数据。
要注销,请使用带有GET方法的常规href链接指向打开的注销页面,或者在回发时使用重定向后获取技术(使用 ASP.NET 的重定向后获取)