Session和Token的区别

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程

1. 为什么会有session的出现?
答:是由于网络中http协议造成的,因为http本身是无状态协议,这样,无法确定你的本次请求和上次请求是不是你发送的。

2. session的生成方式?
答:浏览器第一次访问服务器,服务器会创建一个session,同时为该session生成一个唯一的会话的key,也就是sessionid。然后,将sessionid及对应的session分别作为key和value保存到缓存中,也可以持久化到数据库中或者redis当中。服务器再把sessionid,以cookie的形式发送给客户端,这样浏览器下次再访问时,会直接带着cookie中的sessionid,然后服务器根据sessionid找到对应的session进行匹配。

3. 为什么会有token的出现?
答:首先,session的存储是需要空间的;其次,session的传递一般都是通过cookie来传递的。而token在服务器端是可以不需要存储用户的信息的,token的传递方式也不限于cookie传递;当然,token也是可以保存起来的。

4. token的生成方式?
答:浏览器第一次访问服务器,根据传过来的唯一标识userId,服务端会通过一些算法,如常用的SHA256算法,然后加一个密钥,生成一个token,然后通过BASE64编码一下之后将这个token发送给客户端。客户端将token保存起来,下次请求时,带着token。服务器收到请求后,然后会用相同的算法和密钥去验证token,如果通过,执行业务操作;如果不通过,返回不通过信息。

5. token和session的区别?
1) token和session其实都是为了身份验证,session一般翻译为会话,而token更多的时候是翻译为令牌;
2) session在服务器端会保存一份,可能保存到缓存、文件或数据库;
3) session和token都是有过期时间一说,都需要去管理过期时间;
4) 其实token与session的问题是一种时间与空间的博弈问题,session是空间换时间,而token是时间换空间。两者的选择要看具体情况而定。
5) 虽然确实都是“客户端记录,每次访问携带”,但token很容易设计为自包含的,也就是说,后端不需要记录什么东西,每次一个无状态请求,每次解密验证
,每次当场得出合法/非法的结论。这一切判断依据,除了固化在C/S两端的一些逻辑之外,整个信息是自包含的。这才是真正的无状态。而sessionid,一般都是一段随机字符串,需要到后端去检索id的有效性。万一服务器重启导致内存里的session没了呢?万一redis服务器挂了呢?

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值