每当我单击注销按钮时,它会将我重定向到登录页面,但是当我单击后退按钮时,它将我重定向到上次访问的页面。我没有使用会员资格或 Windows 身份验证。
Session.Abandon();
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Redirect("LoginForm.aspx");
每当我单击注销按钮时,它会将我重定向到登录页面,但是当我单击后退按钮时,它将我重定向到上次访问的页面。我没有使用会员资格或 Windows 身份验证。
Session.Abandon();
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Redirect("LoginForm.aspx");
如果您正在使用会话,则在注销按钮单击时销毁会话值,您可以将这样的检查放在您的应用网页中
if(Session["sessionvaribale"].Equals(null))
{
Response.Redirect("logoutpage url");
}
那您使用哪种身份验证?
在 c# 中,使用表单身份验证注销的代码将是:
// body of function
FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect("Login.aspx", true);
如果您使用 FormsAuthentication,您可能也想使用它的方法注销。
Session.Abandon();
FormsAuthentication.SignOut();
Response.Redirect("index.aspx");
清除缓存不适用于所有浏览器,我在实验中发现用户可以在注销后返回上一页。因此,您可能希望使用 JavaScript 来防止用户在他注销后返回。
下面的文章概述了同样的事情:
它可以跨浏览器工作。
除此之外,您可能还想查看下面的帖子,这也有效:
在注销时单击首先使会话为空
Session.Abandon();
Session.RemoveAll()
Session.Clear();
任何人
然后,如果您使用的是母版页,那么在多页的情况下会更好,
如果会话为空,只需检查母版页加载事件,然后转到登录页面
如果您没有使用母版页,则检查每个页面的会话是否为空
原因之一是浏览器正在缓存页面并从那里加载。如果您在任何情况下都不希望在注销后看到任何页面,请对所有页面使用 no-cache