为什么点击安全退出就退出不了呢?只有关闭浏览器才能退出,郁闷!一般不就是清除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的时效可以设很长,或是直到永远,呵呵,
版权所有 2021-2024 石家庄建站平台 冀ICP备2022000585号-2 24小时服务热线:15383239821