Cookies+Session保存用户登陆状态
来源:互联网 发布:建筑工程算量软件 编辑:程序博客网 时间:2024/05/22 11:40
Cookies+Session保存用户登陆状态的验证方式是纯的Session方式,虽然设置了超时时间,但是好像登陆状态经常会动不动就丢失,导致客户抱怨不断,今天仔细的考虑了一下,决定采用Cookies跟Session结合的方式来判断用户的登陆状态
代码如下:
1、用户登陆代码
HttpContext.Current.Session.Abandon(); //清空当前所有的Session
HttpCookie Cookies = new HttpCookie("AdminInfo");
Cookies.Expires = DateTime.Now.AddHours(-1); //设置过期时间,即强制删除先前的Cookie
HttpContext.Current.Response.AppendCookie(Cookies);
HttpContext.Current.Session.Add("AdminID", Dt.Rows[0]["ID"].ToString());
HttpContext.Current.Session.Add("AdminName", Dt.Rows[0]["UserName"].ToString());
Cookies = new HttpCookie("AdminInfo");
Cookies.Values["AdminID"] = Dt.Rows[0]["ID"].ToString();
Cookies.Values["AdminName"] = Dt.Rows[0]["UserName"].ToString();
Cookies.Expires = DateTime.Now.AddHours(1);//可不设置或者设置成0(代表在关闭浏览器后,立即失效)
HttpContext.Current.Response.AppendCookie(Cookies);
2、登陆状态判断
if (System.Web.HttpContext.Current.Request.Cookies["AdminInfo"] == null){//Cookies已经丢失,这里将重定向到登陆页面}if (System.Web.HttpContext.Current.Session["AdminID"] == null){ System.Web.HttpContext.Current.Session["AdminID"] = System.Web.HttpContext.Current.Request.Cookies["AdminInfo"]["AdminID"].ToString();}string AdminID=System.Web.HttpContext.Current.Session["AdminID"].ToString();if (AdminID== ""){//假如用户ID值不存在,跳转到登陆页面 }else{ //根据用户ID获取该管理员的相关信息,例如权限值等 HttpContext.Current.Session.RemoveAll(); HttpContext.Current.Session.Timeout = 300; HttpContext.Current.Session["UserName"] ="";}
问题:
1、为什么不全部使用Cookies作为用户登陆信息的保存值?
初步考虑到Cookies值有大小的限制,有些属性也不应该作为Cookies存放到客户端,这里最好对Cookies进行一个加密的操作,保证数据的安全。
2、Session为何即使设计了20分钟,但往往会马上就过期了?
初步估计是因为Session是根据服务器的信息来的,是存放在服务器端的内存中的,当服务器端内存一吃紧在做释放工作之后,用户信息当然会丢失了。
- Cookies+Session保存用户登陆状态
- Django网站建设-用户登陆机制,session/cookies
- ASP.NET 关于session和cookies保存用户登录信息
- 当用户禁用了cookies时 session如何保存记录
- iOS持久化Cookies与清空(可以用来保存登陆状态和退出登陆)
- php中利用session保存用户登陆信息
- 用户登陆界面使用Session保存并导入用户名
- 如何获得discuz得用户session登陆状态
- 登录时保存用户cookies
- session显示登陆状态
- putty 保存用户session
- jsp利用session记录登陆状态,保证用户的使用连贯性,并且防止未登录用户绕过登陆页
- java使用cookies保存用户登录信息
- 保持用户状态Session
- APEX session保持登陆状态
- APEX session保持登陆状态
- Session,Cookie,记住登陆状态
- PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新
- 计算字符串的空间长度(像素)
- 使用mysqldumpslow和mysqlsla分析mysql慢查询日志
- swing Top-Level Containers 组成
- 程序员
- C#调用Dll类型对应表
- Cookies+Session保存用户登陆状态
- asp缓存类
- mencoder 报错处理
- xargs和管道
- OpenGL中与鼠标的交互——点击鼠标左键,在鼠标处画点
- 文件读写--ObjectStreamDemo1
- 在table中tr的display:block在firefox下显示布局错乱问题 收藏
- 熊猫烧香病毒源代码 原代码分析
- 个人文档保护---小工具,大功能