cookie&session和token的联系和区别

一、区别

cookie

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

cookie是实际存在的http协议中定义在header中的字段。一般来说,登录网站保存的账号密码,保存的都是cookie。

Session

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。

session是抽象的概念。session是直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建。由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP(java服务器页面)中关闭它。

Session删除的时间是:
1)Session超时:超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求,并且这个时间超过了服务器设置的Session超时的最大时间。
2)程序调用HttpSession.invalidate()
3)服务器关闭或服务停止

二、联系

session 只是逻辑概念,表示一次会话,会话过程是从访问网站开始到关闭浏览器的过程。这个Session是保存在服务端,有一个唯一标识。服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户因为只有这个标识才能知道是那个用户在操作。

如何识别?

preview

使用cookie——每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID(在图报文头的最后一行中的JSESSIONID中),session 的运行依赖 session id。以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。

三、token与cookie&session的区别

    cookie&session

      cookie 登录是有状态的,服务端维护一个 session 客户端维护一个 cookie,cookie 只保留 sessionID 服务端要保存并跟踪所有活动的 session 如下:

  1. 输入用户名密码登陆。
  2. 服务器拿到身份并验证后生成一个 session 存到数据库。
  3. 把 sessionID 返回给客户端存成一个 cookie 保存 sessionID。
  4. 随后的请求会携带这个包含 sessionID 的 cookie。
  5. 服务器拿着 sessionID 找到对应的 session 认证用户是否有对应权限啊。
  6. 登出后,服务端销毁 session 客户端销毁 cookie。

    token

token 的认证方式是无状态的,服务端不保存登陆状态,也不关心哪些客户端签发了 token ,每个请求都会携带 token 通常在 header 中,也可以出现在 body 和 query 如下

  1. 输入用户名密码登陆。
  2. 服务器拿到身份并验证后签发一个 token。
  3. 客户端拿到 token 并存起来,好多地方都可以存。
  4. 客户端发送的每一个请求都要携带 token,好多方式可以携带。
  5. 服务器接收请求后拿到 token 并解析,拿解析的结果进行权限认证(token中可能已经携带权限信息,能被正常解析的 token 被认为是合法机构签发的)。
  6. 登出后,在客户端销毁 token 即可。

é¾æ¥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值