session,cookie,token区别应用以及部分解决方案

参考文档:

1.4种分布式session解决方案
2.cookie、session与token之间的关系
3.session 、cookie、token的区别及联系

会话的发展:

因为http请求是无状态的,所以会有会话标识(session ID)来区分不同用户。但是session ID 客户端只要存1份,服务端却要保存所有的,面对成千上万甚至几百上千万的session ID。
大致机制
1、用户向服务器发送用户名和密码。
2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。
3、服务器向用户返回一个 session_id,写入用户的 Cookie。
4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。
5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。
单服务器问题不大,一单多服务器集群,就涉及到跨域问题。历史解决方案:

  1. 绑定服务器,session sticky,在A访问的用户就在A服务器,但是一旦A服务异常,就会出问题。
  2. 做session 复制,Tomcat内部已经支持分布式架构开发管理机制,可以对tomcat修改配置来支持session复制,在小型集群中,每台服务器都保存了所有的session信息。
  3. 共享session ,存储到共享的地方,所有服务器都到这个地方来取session , memcache和redies都可以。

cookie和session的区别和联系

cookie

cookie是本地客户端用来存储少量数据信息的,保存在客户端,只能保存字符串对象,不能保存对象类型,用户能够很容易的获取,安全性不高,存储的数据量小

session

session是服务器用来存储部分数据信息,保存在服务器,用户不容易获取,安全性高,储存的数据量相对大,存储在服务器,会占用一些服务器资源,但是对于它的优点来说,这个缺点可以忽略了,session是一次浏览器和服务器的交互的会话,当浏览器关闭的时候,会话就结束了,但是会话session还在,默认session是还保留30分钟的

token

Token是在服务端将用户信息经过Base64Url编码过后传给在客户端,每次用户请求的时候都会带上这一段信息,因此服务端拿到此信息进行解密后就知道此用户是谁了,这个方法叫做JWT(Json Web Token)。特点:无状态可扩展,支持移动设备,跨程序访问,安全
令牌,是用户身份的验证方式。
最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。
对Token认证的五点认识

  • 一个Token就是一些信息的集合;
  • 在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;
  • 服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;
  • 基于上一点,你可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;
  • 因为token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;
区别与联系

session会话,代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续。cookie中存放着一个sessionID,请求时会发送这个ID,服务器根据请求参数中的JSESSIONID到服务器中的session库中查询是否存在此JSESSIONID的信息,如果存在,那么服务器就知道此用户是谁,如果不存在,就会创建一个JSESSIONID,并在本次请求结束后将JSESSIONID返回给客户端,同时将此JSESSIONID在客户端cookie中进行保存;session因为请求(request对象)而产生;session是一个容器,可以存放会话过程中的任何对象;session的创建与使用总是在服务端,浏览器从来都没有得到过session对象;session是一种http存储机制,目的是为武装的http提供持久机制。
Token相比较于Session的优点在于,当后端系统有多台时,由于是客户端访问时直接带着数据,因此无需做共享数据的操作。
App通常用restful api跟server打交道。Rest是stateless的,也就是app不需要像browser那样用cookie来保存session,因此用session token来标示自己就够了,session/state由api server的逻辑处理。 如果你的后端不是stateless的rest api, 那么你可能需要在app里保存session.可以在app里嵌入webkit,用一个隐藏的browser来管理cookie session.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ashuntel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值