`
snake_hand
  • 浏览: 575125 次
社区版块
存档分类
最新评论

Cookies+Session保存用户登陆状态

 
阅读更多

Cookies+Session保存用户登陆状态

Java 2008-10-17 10:26 阅读345评论0
字号:

最近在一个项目中,之前的验证方式是纯的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是根据服务器的信息来的,是存放在服务器端的内存中的,当服务器端内存一吃紧在做释放工作之后,用户信息当然会丢失了。

声明本文转自: http://blog.163.com/lao12qi12345@126/blog/static/117915512008917102643525/

分享到:
评论

相关推荐

    ASP.Net如何用Cookies保存对象

    在ASP.Net中,有时候考虑到较多的使用Session来保存对象,会增加服务器的负载,所以我们会选择用Cookies来保存对象的状态,而Cookies只能保存字符串,这时,我们可以考虑用序列化操作来完成我们的目标

    django之session与分页(实例讲解)

    前面我们介绍了cookies,主要应用在用户登录上,保存用户登录状态,不过cookies直接放在了浏览器上,安全性较低,所以我们便引出了session功能与cookies相同,不同的是它放在了客户端,相比较cookies来说安全性更高...

    ASP.NET Session的实现原理分析

    用户向服务器提交请求时,服务器都会给每个用户分配一个SessionId,保存在用户浏览器的Cookies中,SessionId是全局的,也是说只要Cookies还存在,服务器会认为这是同一个用户,从而实现了每个用户都有自己独立的全局...

    python cookie反爬处理的实现

    保存客户端的相关状态 在爬虫中如果遇到了cookie的反爬如何处理? 手动处理  在抓包工具中捕获cookie,将其封装在headers中  应用场景:cookie没有有效时长且不是动态变化 自动处理  使用session机制  使用场景:...

    Nodejs 和Session 原理及实战技巧小结

    于是就有了cookies,用于在浏览器端保存用户数据,它有如下特点 1 是在客户端浏览器端才有的 2 用于记录信息,大小最大为4K字节 3 如果使用了cookies,那么任何对该域名的访问都会带上cookies 目前新型网站更多的...

    Node.JS如何实现JWT原理

    1.为什么需要会话管理 我们用nodejs为前端或者其他服务提供...session和cookies是有联系的,session就是服务端在客户端cookies种下的session_id, 服务端保存session_id所对应的当前用户所有的状态信息。每次客户端请

    Python Web框架之Django框架cookie和session用法分析

    在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话。 两者最大的区别是cookie的信息是存放在浏览器客户端的,而session是存放在服务器端的。 两者使用的方式都是request....

    ASP.NET中Cookie状态的说明与用法

    这样,服务器保存了 Session,浏览器保存了 Cookie(用户的 ID)。当下一次用户发出请求时,请求的用户将被要求提交用户的 ID,两者对照以正确地还原原来的会话状态。这就是在无状态协议的 HTTP 条件下保持用户标志...

    对比分析php中Cookie与Session的异同

    让大家对Cookie和Session有一个更深入的了解,并对自己的开发工作中灵活运用带来启示。 一、cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个...它是在用户端的会话状态的存贮机制,他需要用户打开客户

    Tomcat中的Session与Cookie深入讲解

    而对于 Web 应用,它的活动都是依赖某个状态的,比如用户登录,此时使用 HTTP 就需要它在一次登录请求后,有为后续请求提供已登录信息的能力。本文首发于公众号顿悟源码. 解决办法就是使用 Cookie,它由服务器返回...

    restify-state:用于restify的会话和cookies

    恢复状态模块提供了中间件,用于在 Restify 请求之间保存状态。安装 npm install restify-state用法 const restify = require ( 'restify' ) ;const restifyState = require ( 'restify-state' ) ;let server = ...

    Django CSRF跨站请求伪造防护过程解析

    前言 CSRF全称Cross-site request forgery(跨站请求伪造),是一种网络的攻击方式,也被称为“One Click Attack”或者Session Riding,通常缩写为...4、所以网站A在接收到请求之后,可判断当前用户登录状态,所以根据

    ASP.NET3.5典型模块开发源代码

    1.2.6 根据用户登录身份显示不同效果页功能 9 1.3 基于角色的登录方式 10 1.3.1 在应用程序中启用角色 10 1.3.2 创建角色 10 1.3.3 创建角色访问规则 11 1.3.4 赋予用户角色权限 11 1.3.5 验证角色的...

    Python requests模块cookie实例解析

    与session不同之处,在于cookie数据仅保存于客户端。requests也提供了相应到方法去处理cookie。 在python requests模块-session中,我们知道了requests中的session对象能够在请求之间保持cookie,它极大地方便了我们...

    java-servlet-api.doc

    当Session终止时,服务器会释放Session对象以及所有绑定在Session上的对象。 绑定对象到Session中 如果有助于你处理应用的数据需求,你也许需要绑定对象到Session中,你可以通过一个唯一的名字绑定任何的对象到...

    信息技术教学辅助平台1.04版源码

    2010.03.09偶然发现教师登录的session为单用户设置,现已改为多用户。(如果多个教师利用教师机作服务器并使用同一台教师机并同用一个平台,请采用本次更新) 2010.03.06更改为登录教师所教班级的总分统计和上课班级...

    超级有影响力霸气的Java面试题大全文档

     Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常...

    EHTTP - 易语言网站开发框架 - V1.2.1-易语言

    ④取HTTP服务器已保存Session数量 2、Request【请求类】 ①取Cookies【去浏览器携带Cookie(类)】 ②取Get 【取GET请求】 ③取POST数据【如果有POST请求,可以获取POST数据】 ④取Session【用于获取该请求的...

    java 面试题 总结

    Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...

    ASP3《高级编程》(第一部分)

    2.3.2 访问和更新Cookies集合 44 2.3.3 Form和QueryString的差异 46 2.3.4 查看Request和Response对象内容 47 2.3.5 ASP中cookie的使用 52 2.4 使用ServerVariables集合 53 2.4.1 “自引用”页面 54 2.4.2 ...

Global site tag (gtag.js) - Google Analytics