接口鉴权之cookie,session,token

一:鉴权

鉴权是指验证用户是否拥有访问系统的权利--鉴定权限

二:cookie,session,token由来

以前的web基本都是文档的浏览,服务器不需要记录信息,所以无状态协议http足够应对(本次请求和上一次请求没有关系,不能共享信息),现在的web要求比如登录才能查看信息,所以就有了会话标识(sessionid) ,用来解决共享信息的问题, 当然session是基于cookie实现的。

服务器为每个用户生成一个不一样的随机字符串, 每次向服务器发起HTTP请求的时候, 把这个字符串给传给服务器。这样就能区分谁是谁了。

三:cookie

可以F12去看看cookie,可以理解为一个文件,存在硬盘上(浏览器安装路径下)

好处:对服务端没什么压力,因为是存在本地的

四:session(会话)

session:是在和服务器打交道后产生的,比如登录成功后

第一步:登录成功后,服务器会生成sessionId存在服务器中(相当于锁)

第二步:服务器要把sessionId以Cookie的形式回写到客户端(相当于钥匙)

第三步:就是客户端,比如要访问个人资料,那请求中就要带着这个Cookie,如果正确,那就运行访问(相当于拿钥匙去开锁)

接口鉴权session解决方案

完成登录之后, 获取带有session信息的cookie, 再次请求时加入。

可以使用postman工具,比如我登录成功了,可以在这里拿cookie值去使用,要去访问个人资料接口,在头里面带这个值就行了

session缺点:

虽然session解决了共享信息的问题, 但同时对于服务器带来了其他问题---资源开销。对于客户端来说session是非常好的, 只需要cookie中存一个字符串就行了, 但是服务器必须存储所有在线的用户session, 那么这是很大一笔开销(cpu, 内存) , 严重影响了服务器的性能。这时可以选择去扩展服务器做集群, 但同时也出现分布式session问题, 那么可以采用session粘滞或者session集中式管理(red is) 来解决。

五:token

出来较晚,主要是解决服务器压力的问题(因为sessionId占内存,达到一定量级服务器会卡顿)

第一步:生成的token不存在服务器

第二步:把token返回给客户端,可以理解为钥匙和锁(都在token里面)都一起返回给客户端了

第三步:请求的时候带上toekn,服务器会验证这个钥匙和锁是不是有效的,有效就允许访问,无效就不行

token的组成

可以理解1是钥匙,2是锁,这个签名是1(头,用户Id(这个看业务))生成的

因为1有可能会被篡改,这里就是拿1通过算法再生成一个签名(锁),如果这个签名和2一致,说明是正确的

接口鉴权token解决方案:

完成登录之后,获得token字符串,再次请求时加入

六:cookie和session的区别

七:session和token区别

猜你喜欢

转载自blog.csdn.net/weixin_42717928/article/details/106588342