文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

分析Session和Token

2024-04-02 19:55

关注

这篇文章主要讲解了“分析Session和Token”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分析Session和Token”吧!

01.Cookie

是在客户端(浏览器)保存用户信息的一种机制;Cookie 由服务器生成,发送给浏览器,然后浏览器把 Cookie  以键值对的形式保存在客户端的某个目录下面;每种浏览器存储大小会有一些差异,一般不超过 4KB;

当下一次请求的时候,会把 Cookie 发送给服务端,服务端对 Cookie 中的信息解析并验证身份。

比如你入职一个公司,会给你办一张工卡,上面有你的姓名、工号、部门等信息,你进入职场的时候,拿着工卡就可以进出。

但是 Cookie 是不可以跨域名使用的;就好像我拿着我们公司的工卡,去你们公司,保安肯定是不会放我进去的。

02.Session

保存在服务端,可以用于记录客户状态;

比如我们经常会用 Session 保存客户的基本信息、权限信息等;用户第一次登录之后,服务器就会创建一个 Session ,并将 SessionID  返回给浏览器,浏览器通常将其写入到 Cookie 中,这种 Cookie 也叫做 SessionCookie ,浏览器再次访问时,只需要拿着 SessionID  从服务端查找 Session 就可以了。

另外,这个 SessionID 不一定非要保存到 Cookie 中,只是对于浏览器客户端,大家的默认做法是放在 Cookie 中。

03.Cookie 和 Session

关于 Cookie 和 Session 的区别,很多同学会回答:“Cookie 保存在客户端,Session  保存在服务器端”,其实这样的想法并不全面:

Cookie 是一个实际存在的的东西,一个很具体的东西,就是一段数据,而 Session 是一个抽象概念,或者叫做模式方法,它有很多实现方案;

比如 Tomcat 的实现方法:把状态保存在服务端,然后生成一个 JSESSIONID 放在 Cookie 中;请求过来之后,拿着 JSESSIONID  在服务器端查询并验证状态。

分析Session和Token

04.Token

当然,随着用户量的增加,保存在服务端的 Session  也不断增加,这给服务端带来了很大的压力,并且如果程序是集群或分布式方式部署,同一个用户第一次请求,访问到了 A 服务器,创建了  Session,但是第二次请求却发到了 B 服务器上,但是 B 服务器上并没有之前创建的 Session;这就是分布式架构中的 Session  共享问题。

针对这个问题,我们可以进行服务器之间的 Session 同步,或者干脆把 Session 保存到第三方的组件中,例如保存到 Redis  中;但是不管是哪种方案,都让 Session 变成了项目的负担。

这时候,服务端就会想,如果 Session  不保存在我这里多好,第一次发送用户名密码给我,验证通过后我给你一个通行证,以后客户端每次请求的时候就带着这个通行证;

这个通行证就是  token,当然这个验证结果中需要包含客户端信息,服务端需要知道请求是谁发过来的;还需要包含时间信息,因为通行证不可能永远有效;通行证还不能是明文的,否则会有被截获的风险。

HMAC-SHA1:

token = user_id|expiry_date|HMAC(user_id|expiry_date, k)

AES:

token = AES(user_id|expiry_date, x)

RSA:

token = RSA(user_id|expiry_date, private key)

分析Session和Token

05.SSO 单点登录

有些公司会建设统一登录系统(单点登录),客户端先去这个系统获取 Token ,验证通过再拿着这些Token去访问其他系统;API Gateway  也可以提供类似的功能,我们公司就是这样,客户端接入的时候,先向网关获取 Token,验证通过了才能访问被授权的接口,并且一段时间后要重新或者  Token。

分析Session和Token

06.Token 和 Session

对于 session 和 token ,对比它们没有本质的区别,两者都是加密后的字符串,都可以做身份验证。当然 token 比 session  还是有一定区别的,比如 token 跨域更容易,token 更好控制等等,另外在授权场景下,token 比 session 有着更大的优势;

比如,我开发一个网站,允许微信用户登录,使用 token 的流程大概是这样的:

感谢各位的阅读,以上就是“分析Session和Token”的内容了,经过本文的学习后,相信大家对分析Session和Token这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯