当前位置:编程学习 > C#/ASP.NET >>

求注销代码

vs2008 asp.net C#
求注销代码
要求严密的注销方法,至少能防止倒退到注销前的页面
--------------------编程问答-------------------- 在注销响应事件中清空登陆时所有加载的信息,session等,以及登陆后添加的一些其他的标识用户登陆的消息,然后切换到登陆界面,不知道这样还有哪地方不严密。 --------------------编程问答--------------------
引用 1 楼  的回复:
在注销响应事件中清空登陆时所有加载的信息,session等,以及登陆后添加的一些其他的标识用户登陆的消息,然后切换到登陆界面,不知道这样还有哪地方不严密。

听起来很不错
要是有代码就好了 --------------------编程问答-------------------- 就是把缓存清空,session清空,cookie清空。 --------------------编程问答-------------------- 看你是用session 登陆验证还是 cookies验证。。

不过注销都是 先清除session 或 cookies ,然后 直接定向到首页 --------------------编程问答--------------------
引用 4 楼  的回复:
看你是用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" %>

<!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>
--------------------编程问答-------------------- Response.Clear(); 你把返回的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");
联网的话,应该可以转到这网页。 --------------------编程问答--------------------
引用 7 楼  的回复:
Response.Clear(); 你把返回的HTML都清空了,自然就什么都看不见了

Cookies的清除是有点麻烦的,调用Response.Cookies.Clear()是没办法删除的,想删除Cookie只有把Cookie的时间设置为一个过去的时间才可以。

你可以参考之前论坛的帖子:http://topic.csdn.net/u/20080711/15/9efde7a1-b02d-……


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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,