求注销代码
vs2008 asp.net C#求注销代码
要求严密的注销方法,至少能防止倒退到注销前的页面
--------------------编程问答-------------------- 在注销响应事件中清空登陆时所有加载的信息,session等,以及登陆后添加的一些其他的标识用户登陆的消息,然后切换到登陆界面,不知道这样还有哪地方不严密。 --------------------编程问答--------------------
听起来很不错
要是有代码就好了 --------------------编程问答-------------------- 就是把缓存清空,session清空,cookie清空。 --------------------编程问答-------------------- 看你是用session 登陆验证还是 cookies验证。。
不过注销都是 先清除session 或 cookies ,然后 直接定向到首页 --------------------编程问答--------------------
我是用session,代码如何写?
我目前的代码是:
FormsAuthentication.SignOut();
Session.Clear();
Session.Abandon();
Response.Clear();
Response.End();
代码执行后,当前页面变成空白,什么也没有了
求改 --------------------编程问答-------------------- 我的页面极简单:(请注意,我的登录和注销是同一个按钮),当我成功登录后,再点注销,该页面一片空白,什么也没有了。怎么改?
C#代码如下:
//略去using
namespace prjSRI01
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["userid"].ToString() != "")
{
Username.Text = Session["name"].ToString();
btnRegister.Enabled = false;
btnLogin.Text = "注销";
}
}
protected void btnLogin_Click(object sender, EventArgs e)
{
if (btnLogin.Text == "登录")
{
Response.Redirect("login.aspx?ReturnUrl=" + Request.Url.ToString().Substring(Request.Url.ToString().LastIndexOf('/') + 1));
}
else
{
FormsAuthentication.SignOut();
Session.Clear();
Session.Abandon();
Response.Clear();
//Response.Redirect("Login.aspx", false);
Response.End();
}
}
protected void btnRegister_Click(object sender, EventArgs e)
{
Response.Redirect("CreateUser.aspx?ReturnUrl=" + Request.Url.ToString().Substring(Request.Url.ToString().LastIndexOf('/') + 1));
}
}
}
html如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="prjSRI01.WebForm2" %>--------------------编程问答-------------------- Response.Clear(); 你把返回的HTML都清空了,自然就什么都看不见了
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<style type="text/css">
.style1
{
width: 71%;
}
.style2
{
width: 180px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="style1">
<tr>
<td class="style2">
用户名:<asp:Label ID="Username" runat="server" Text="[未登录]"></asp:Label>
</td>
<td>
</td>
<td>
<asp:Button ID="btnLogin" runat="server" onclick="btnLogin_Click" Text="登录" />
</td>
<td>
<asp:Button ID="btnRegister" runat="server" onclick="btnRegister_Click"
Text="注册" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Cookies的清除是有点麻烦的,调用Response.Cookies.Clear()是没办法删除的,想删除Cookie只有把Cookie的时间设置为一个过去的时间才可以。
你可以参考之前论坛的帖子:http://topic.csdn.net/u/20080711/15/9efde7a1-b02d-4fb3-b526-dd43b382879c.html
另外,再把浏览器的缓存给禁掉,就OK了
Response.Expires = 0;
Response.CacheControl = "no-cache "; --------------------编程问答-------------------- Session.Abandon();
Response.Clear();
//Response.Redirect("Login.aspx", false);
Response.End();
你把这几行注释掉,换上Response.Redirect("http://www.hao123.com");
联网的话,应该可以转到这网页。 --------------------编程问答--------------------
Response.CacheControl = "no-cache ";方法对于IE有效,在FF下可能没效果,所以可以用Response.Cache.SetNoStore();来使页面过期 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- if (!IsPostBack)
{
if (Session["user"] != null)
{
Session.Remove("user");
Response.Redirect("Default.aspx");
}
else
{
Response.Redirect("Default.aspx");
}
} --------------------编程问答-------------------- 不知道你登陆界面中将用户信息保存到哪里去了,
如果是Session的话:
Session.Abandon();
如果用的的Form身份验证,可以用:
FormsAuthentication.SignOut();
补充:.NET技术 , ASP.NET