用户登录时,我将用户名和密码存储在会话中。注销后,当我按浏览器的后退按钮时,它再次进入用户的主页。我希望会话必须过期,以便在用户按下后退按钮注销后,他会被重定向到登录页面。
我已经试过了
Session.RemoveAll();
Session.Abandon();
Session.Remove("StoreUser");
StoreUser是包含用户名和密码的会话的名称。
用户登录时,我将用户名和密码存储在会话中。注销后,当我按浏览器的后退按钮时,它再次进入用户的主页。我希望会话必须过期,以便在用户按下后退按钮注销后,他会被重定向到登录页面。
我已经试过了
Session.RemoveAll();
Session.Abandon();
Session.Remove("StoreUser");
StoreUser是包含用户名和密码的会话的名称。
当您的注销按钮单击事件时使用FormsAuthentication.SignOut ,请看下面的代码
public void LogoutLink_OnClick(object sender, EventArgs args)
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
并查看以前的有用讨论:ASP.NET authentication login and logout with browser back button
## IN Global.asax file you have to clear all the session in Session_end event ##
clear all the session in this event.
protected 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.
}
我用了FormsAuthentication.SignOut();
在我的网络应用程序的另一个地方,当用户登录时,我的 WebForm 上有这个:
<asp:LoginStatus ID="LoginStatus1" LogoutImageUrl="~/Img/Logout.png"
BackColor="Transparent" runat="server" onloggingout="LoginStatus1_LoggingOut" />
这在后面的代码中:
protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
{
MembershipUser u = Membership.GetUser(HttpContext.Current.User.Identity.Name);
u.LastActivityDate = DateTime.Now.AddMinutes(-Membership.UserIsOnlineTimeWindow);
Membership.UpdateUser(u);
}
以下链接可以帮助您 - http://www.codeproject.com/Tips/135121/Browser-back-button-issue-after-logout
您的会话正在清除,但您的页面缓存正在存储在客户端。你必须处理它。