当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net 退出登陆(解决退出后点击浏览器后退问题仍然可回到页面问题)

ASP.NET
不同映射模式下的直线输出的效果问题
ASP.NET开发下的MVC设计模式的实现
ASP.NET编写应用程序的十大技巧
ASP.NET中使用AJAX的简单方法
ASP.NET MVC实现自己的视图引擎
认识asp.net会话状态
ASP.NET实现页面传值的几种方法
.NET中容易混淆的几组重要概念
详解.NET中的动态编译技术
如何使用ASP.Net加密Cookie
ASP.NET 2.0跨网页提交的三种方法
ASP.NET 2.0创建母版页引来的麻烦
.Net整合其他平台的一些探讨
ASP.NET编程经验技巧10则
最佳实践 ADO.NET实用经验无保留曝光
在.NET上执行多线程操作要考虑的两大因素
.Net开发 细说Visual Basic.Net
ASP.NET网络编程中经常用到的27个函数集
ASP.NET防止用户多次登录的方法
对ASP.NET MVC项目中的视图做单元测试

ASP.NET 中的 asp.net 退出登陆(解决退出后点击浏览器后退问题仍然可回到页面问题)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 176 ::
收藏到网摘: n/a

退出登陆是再常见不过的了,先清除Session,再转到登陆页面 Session.Abandon();
Response.Redirect("Login.aspx");
但是这样点点击浏览器的后退仍然可以回到刚才的页面,这可不行,在网上找了一下,也有不少人遇到这样的问题,试了一些方法,都不管用。不过最后还是找到,共享一下。
http://blog.csdn.net/lhypang2006/archive/2008/03/11/2170751.aspx
Session.Abandon();
Response.Write("<script>window.location.href='Login.aspx'</script>");
很简单,就是把Response.Redirect改为Response.Write,输出脚本,实现跳转。
再共享一个,也是关于退出的。
妙用Asp.Net中的HttpHandler
上面的方法我觉得很好,写一个类继承IHttpHandler
public class LogoutHttpHandler : IHttpHandler
{
/// <summary>
/// 通过实现 IHttpHandler 接口的自定义 HttpHandler 启用 HTTP Web 请求的处理。
/// </summary>
/// <param name="context">HttpContext 对象,它提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用。 </param>
public void ProcessRequest (HttpContext context)
{
FormsAuthentication.SignOut();
context.Response.Redirect("Login.aspx",true);
}
再修改web.config,在<system.web></system.web>中增加如下脚本:
<httpHandlers>
<add verb="GET" path="Logout.aspx" type="LogoutHttpHandler" />
</httpHandlers>
文章中把类编译成了dll,也可以只在App_Code中添加这样的类就好了。
还有上面的ProcessRequest 并没有清除Session。而且也是用Response.Redirect,点击后退也是可以回到原来的页面的。我改了一下
public class LogoutHttpHandler : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
//FormsAuthentication.SignOut();//这样可以不用
context.Session.Abandon();
context.Response.Write("<script>window.location.href='Login.aspx'</script>");
}
}
这样不用再加一个页面Logout.aspx,退出的代码也简单。
protected void Exit_Click(object sender, EventArgs e)
{
Response.Redirect("Logout.aspx");
}