cookie工作原理、session得工作原理、token组成(header、payload、signature)
·
cookie工作原理、session得工作原理、token三部分组成
cookie工作原理
1、浏览器端第一次发送请求到服务端
2、服务端创建cookie,cookie中包含用户信息,然后将该cookie发送到浏览器端
3、浏览器端再次访问服务器端会携带服务器端创建cookie
4、浏览器端通过cookie中携带得数据区分不同用户
cookie主要包括:key:设置cookie得key
value:key对应得value
max_age/expire_time:设置过期事件
domain:该cookie在哪个域名中有效
path:该cookie在哪个路径下有效
session得工作原理(Django的默认保存位置在数据库中,在django_session表中)
1、浏览器第一次发送请求到服务端,服务端端创建一个session,
同时会创建一个特殊得cookie(name为JSESSIONID的固定值,value为session对象的ID),然后将该cookie发送至浏览器端
2、浏览器端发送第n次请求到服务器端,浏览器端访问服务器端就会携带该name为JSESSIONID的Cookie的
value(sessionId),去查询session对象,从而区分不同用户
如果name为JSESSIONID的Cookie不存在,返回1中重新去创建session与特殊得cookie
区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上
2、cookie不是很安全,别人可以分析存放在本地cookie并进行cookie欺骗,如果主要考虑到安全应当使用session
3、session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器性能,考虑减轻服务器性能方面就用cookie
4、将登录信息等重要信息存放在session,其他信息如果需要保留,放在cookie中
token主要有三部分组成:
header:指定签名算法
payload:指定用户id,过期时间等非敏感数据
signature签名:服务端根据header知道他该用哪种签名算法,再用密钥根据签名算法对header+payload生成签名,就生成一个token
header和payload是以base64得形式存在得
当服务端收到浏览器传过来得token时,会首先取出token中得token+payload,根据密钥生成签名,
然后再与token中得签名对比,如果成功说明签名是合法得,即token是合法的。
token得缺点:
1、太长了:在token中存储信息越长,token本身也越长,这样的话每次带上token请求,就会造成一定负担
2、不太安全:因为太长了,他不会放在cookie里,会放在local storage,但是它可以被js直接读取
所以token更适合一次性命令认证,设置一个比较短得有效期
单点登录:指多个应用系统中,用户只要登录一次就可以访问所有相互信任得应用系统
总结:
session和token本质上没有区别,都是对用户身份得认证机制,只是他们实现得校验机制不一样而已(一个存在server,
通过在redis等中间件获取校验,一个保存在client,通过签名校验方式来校验),多数情况下使用session比较合适,
但是像单点登录这种,一次性命令认证使用token比较合适
更多推荐
所有评论(0)