注册 登录
编程论坛 ASP.NET技术论坛

session退出登录代码怎么写?

pietro 发布于 2006-11-05 23:06, 7994 次点击

我这么写怎么还是不能退出登录,为什么?

protected void LinkButton3_Click(object sender, EventArgs e)
{
Session.Abandon();
Response.Redirect("login.aspx");
}

9 回复
#2
小海龟2006-11-06 07:42
你用session("abc")="";这种形式试试看.
#3
lian80882006-11-06 09:38

if(Session["abc"] = null)
{
Response.Redirect("login.aspx");
}

不过这种方式不好,人家可以通过浏览器左上角的“后退”按钮返回。

下面的方式就可以避免这种情况:
if(Session["abc"] = null)
{
Response.Redirect("logout.aspx");
}

添加界面logout.aspx
在logout.aspx.cs的Page_Loge中写入以下代码:
private void Page_Load(object sender, System.EventArgs e)
{
在此处放置用户代码以初始化页面
Session.Remove("abc");
Session.RemoveAll();
this.Page.RegisterStartupScript("","<script>window.top.document.location.href='Login.aspx';</script>");
}

#4
發呆的小猪2006-11-07 11:05
Session.RemoveAll();
把所有用的session全部清掉.
#5
pietro2006-11-07 15:42
为什么还是不能退出啊 ?
谁能提供完整的代码啊?
#6
bygg2006-11-07 21:34
3楼的代码不是已经很完整了吗?
#7
foshan2007-05-18 12:45
以下是引用lian8088在2006-11-6 9:38:11的发言:

if(Session["abc"] = null)
{
Response.Redirect("login.aspx");
}

不过这种方式不好,人家可以通过浏览器左上角的“后退”按钮返回。

下面的方式就可以避免这种情况:
if(Session["abc"] = null)
{
Response.Redirect("logout.aspx");
}

添加界面logout.aspx
在logout.aspx.cs的Page_Loge中写入以下代码:
private void Page_Load(object sender, System.EventArgs e)
{
在此处放置用户代码以初始化页面
Session.Remove("abc");
Session.RemoveAll();
this.Page.RegisterStartupScript("","<script>window.top.document.location.href='Login.aspx';</script>");
}

试了您的代码,仍然是能够通过浏览器左上角的“后退”按钮返回需要登录验证通过的页面。我的操作是这样的,先登录 Login.axpx 页面,通过输入正确的用户名和密码 验证通过后才能进入 index.aspx 页面,然后我通过左边的收藏夹列表点击了其它的网页,然后通过浏览器左上角的“后退”按钮,这时index.aspx 页面依然出现,不需先到 Login.axpx 页面通过验证的。如何解决这个问题啊?
index.aspx.cs 的Page_Load事件如下:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["logon"] != null)
{
if (Session["logon"].ToString() != "logonSuccess")
{ Response.Redirect("logout.aspx"); }
}
else
{
Response.Redirect("logout.aspx");
}
……
}
Logout.aspx.cs 代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
Session.Remove("logon");
Session.RemoveAll();
this.Page.RegisterStartupScript("","<script>window.top.document.location.href='Login.aspx';</script>");
}

我想是不是因为在进入了index页面后,接着再打开其它网页的时候,并没有自动清空Session["logon"]引起的,导致通过浏览器左上角的“后退”按钮返回到index页面时,能通过Session验证?

#8
foshan2007-05-18 14:52
#9
虾米仔2007-05-20 14:39

双击页面Global.asax
修改代码
protected void Session_End(Object sender, EventArgs e)
{
session["abc"]="";

}
退出登陆
protected void LinkButton3_Click(object sender, EventArgs e)
{
Session["abc"]="";
Response.Redirect("login.aspx");
}

进入index.aspx
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
if(this.Session["abc"].ToString()!="")
{

}
else
{
Response.Redirect("Login.aspx");
}
}

#10
bly2010-06-10 15:21
session["abc"]="";是什么意思啊
1