石家庄建站平台

十年经验 优惠价格 贴心服务

服务热线 15383239821

asp.net如何彻底退出cookies,session,User.Identity.Name?

发布时间:2011-04-09    来源:

为什么点击安全退出就退出不了呢?只有关闭浏览器才能退出,郁闷!一般不就是清除COOKIES、SESSION什么的吗?这谁都知道!新了解User.Identity.Name。

页面代码:
if (!this.IsPostBack)
{
//判断用户是否登录
if (Session["UserGrade"]==null)
  Session["UserGrade"]=DBOperate.GetUserGrade(User.Identity.Name);
  Lbl_UserGrade.Text="用户级别:"+ Session["UserGrade"].ToString();
   if ((User.Identity.Name==null)||(User.Identity.Name==""))
{
  Lbl_UserName.Text="当前用户:过客";
}
else
{
  Lbl_UserName.Text="当前用户:"+User.Identity.Name.ToString();
}

}

安全退出按钮代码:

FormsAuthentication.SignOut();
        Session.Abandon();
        Session.Clear();
        Response.Cookies.Clear();
        Response.Buffer = true;
        Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
        Response.Expires = 0;
        Response.CacheControl = "no-cache";
        Response.Redirect("default.aspx");


再怎么写,点击都退出不了,除了关闭浏览器;这怎么改?不可能说安全退出就要关闭浏览器才行吧?

 

回答:

我不推荐用session来保持状态,它的好处不说了,不好的地方我说说;
一,它是会话级的变量,当前会话结束,就消失了,不能永久保留信息,如购物车中的用户查阅商品的情况,这些信息没有什么安全性方面的考虑,为了用户方便,最好长时间保留下来;
二、占用内存资源;你用人家的服务器,人家不会让你太占用资源的;
三、当采用web园时,或webfarm时,会出一些问题,这个我解释一下,当你的网站流量大时,你不得不采用多台服务器,用来负载平衡,举例,当我登录时,我的请求分配到了第一服务器,登录完,session生成了,当我操作时,我的请求到了第一服务器,结果它太忙了,就把我分到了第二台服务器,第二台服务器的内存中有我的session吗?没有,于是,系统认为我没有登录,晕死吧;

我建议用cookies,各大网站也是采用它来保持状态的,当然,它有安全问题,在创建cookies时,最好采用加密手段,这个我就不说了;
如果安全性要求很高,像银行系统,那就得下载个插件到客户端了;session也靠不住的。

cookies的工作原理和session差不多,操作方式也差不多,不同是cookies的值存在客户端,而session的值是存在服务器端;但是,它们都有一个键值在客户端,这是没有办法的事情,否则像sesion,当用户登录后,如果客户没有留一点儿信息,服务器根本不会知道请求来自哪里。

我建议采用cookies来保持状态,这也是我的习惯。cookies的时效可以设很长,或是直到永远,呵呵,


还没开展互联网业务? 马上开始

关注多多建站公众号
扫码加好友