目前我正在处理一个项目,当用户输入他的电子邮件和密码时会创建一个登录会话 但是在会话过期的一段时间之后会出现登录页面,当我输入详细信息时,我会被重定向到主页 在会话到期之前有没有办法回到上一页?
答案 0 :(得分:0)
很抱歉打破它,但是没有办法在Session_End重定向,因为那里没有客户端!当会话结束时,您将被重定向到destinationurl!
您可以重定向到登录!打开Web.config文件,将会话超时设置为1分钟,如下所示:
<system.web>
<sessionState mode="InProc" timeout="1"/>
</system.web>
现在打开Global.asax文件并为Session_Start事件编写以下代码:
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
if (Session["LoginUserName"] != null)
{
//Redirect to Welcome Page if Session is not null
Response.Redirect("Welcome.aspx");
}
else
{
//Redirect to Login Page if Session is null & Expires
Response.Redirect("Login.aspx");
}
在Global.asax文件的上述代码中,如果会话为null,则页面将重定向到Login.aspx。如果没有,则重定向到Welcome.aspx。我在Global.asax文件中执行了此逻辑,因为Global.asax文件事件是全局触发的。
现在整个Global.asax文件如下:
<%@ Application Language="C#" %>
<script RunAt="server">
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e){
// Code that runs when a new session is started
if (Session["LoginUserName"] != null)
{
//Redirect to Welcome Page if Session is not null
Response.Redirect("Welcome.aspx");
}
else
{
//Redirect to Login Page if Session is null & Expires
Response.Redirect("Login.aspx");
}
}
void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.
}
</script>
现在打开Login.aspx.cs页面并在Login按钮中单击以下代码编写以下代码:
protected void Button1_Click(object sender, EventArgs e)
{
Session["LoginUserName"] = Convert.ToString(TextBox1.Text);
Response.Redirect("Welcome.aspx");
}
在上面的代码中,首先我们在会话中存储登录用户名,这样我们就可以在下一页上获得登录用户名,然后我们将页面重定向到Welcome.aspx页面。
现在在Welcome.aspx.cs页面中编写以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text="WelCome " +Convert.ToString(Session["LoginUserName"]);
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("AddUserDetails.aspx");
}
}
在上面的代码中,用户登录到应用程序后,它会被重定向到Welcome.aspx页面,这样我们就可以在Session加载页面时获取当前用户登录名,并将其分配给标签。
我添加了另一个AddUserDetails.aspx页面,并从上面的代码中调用它来确定会话是否已过期。如果它已过期,那么它将重定向到AddUserDetails.aspx页面,否则它将转到Login.aspx页面。
现在我们的应用程序已准备好进行测试,所以让我们运行应用程序。将显示以下登录页面。