zoukankan      html  css  js  c++  java
  • session cookie 在用户登录中的使用

    cookie的机制:

    Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站跟踪用户,实现用户自定义功能。

    Cookie的Domain和Path属性标识了这个Cookie是哪个网站发送给浏览器的;Cookie的Expire属性标识了Cookie的有效时间(如果不设置过期时间,则表示这个Cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。即会话cookie,会话cookie保存在内存里;设置了expire的cookie保存在硬盘上,保存在硬盘上的cookie可以在不同的浏览器进程间共享)。

    session的机制:

    session是存放在服务器端的类似于HashTable结构。

    当浏览器第一次发送请求时,服务器自动生成一个hashtable和一个sessionID,然后通过响应发送到浏览器。

    当浏览器第二次发送请求时,会将sessionID放在请求中一并发送到服务器上,取出sessionID,找到hashtable 对比。

    session的客户端实现形式(即sessionID在客户端的保存方法):

         方法一:使用cookie来保存(“记住我的登录状态”功能就是这么实现的)

                      服务器通过设置Cookie的方式将Session ID发送到浏览器。如果我们不设置这个过期时间,那么这个Cookie将不存放在硬盘上,当浏览器关闭的时候,  Cookie就消失了,这个Session ID就丢失了。如果我们设置这个时间为若干天之后,那么这个Cookie会保存在客户端硬盘中,即使浏览器关闭,这个值仍然存在,下次访问相应网站时,同 样会发送到服务器上。

    方法二(不常用):使用URL附加信息的方式,也就是像我们经常看到JSP网站会有aaa.jsp?JSESSIONID=*一样的。这种方式和第一种方式里面不设置 Cookie过期时间是一样的。

    方法三(不常用):是在页面表单里面增加隐藏域,这种方式实际上和第二种方式一样,只不过前者通过GET方式发送数据,后者使用POST方式发送数据。但是明显后 者比较麻烦。

    实现“记住我的登录状态”的功能

    其实这已经很好的实现了我们的功能了。但是,前面也提到了,实际上Session并不会一直都存在的,过了一定的时间之后,服务器上的Session就被 销毁了,以减轻服务器的访问压力。当服务器上的数据被销毁后,即使客户端上存放了Cookie也没有办法“记住我的登录状态”了。

     通常的实现办法是,将用户的用户名和加密之后的密码也通过cookie的方式存放在客户端,当服务器上的Session销毁以后,使用cookie里面存放的用户名和加密之后的密码重新执行一次登录操作,重建Session,并更新客户端上cookie中存放的sessionID。

    多点登录问题怎么解决?

    为每个登录的用户分配一个唯一的令牌,比如GUID,客户端的请求必须提供这个令牌,
    这样当同一个用户再次登陆时,用户对应的令牌被重写,前一个客户端的令牌失效,自然就被踢了
  • 相关阅读:
    苹果将首次采用HTML5直播发布会 狼人:
    Python 3.2 alpha 2发布 狼人:
    下一代Linux文件系统Btrfs走向成熟 狼人:
    Hello! 404 狼人:
    退格回车控制台输入密码
    poj 3233 Matrix Power Series
    地址参考clang: error: linker command failed with exit code 1 (use v to see invocation)
    文本截断JQuery为textarea添加maxlength,并且兼容IE
    代码下载Html5初探视频元素video示例
    c# 限制textbox的输入范围和长度(长度不用maxlength方法)
  • 原文地址:https://www.cnblogs.com/dovfwx/p/7520581.html
Copyright © 2011-2022 走看看