• Session,Cookie,JWT的理解


    为什么要使用会话管理

    众所周知,HTTP协议是一个无状态的协议,也就是说每个请求都是一个独立的请求,请求与请求之间 并无关系。但在实际的应用场景,这种方式并不能满足我们的需求。举个大家都喜欢用的例子,把商品 加入购物车,单独考虑这个请求,服务端并不知道这个商品是谁的,应该加入谁的购物车?因此这个请 求的上下文环境实际上应该包含用户的相关信息,在每次用户发出请求时把这一小部分额外信息,也做 为请求的一部分,这样服务端就可以根据上下文中的信息,针对具体的用户进行操作。所以这几种技术 的出现都是对HTTP协议的一个补充,使得我们可以用HTTP协议+状态管理构建一个的面向用户的WEB 应用。

    Session 和Cookie的区别 

    这里我想先谈谈session与cookies,因为这两个技术是做为开发最为常见的。那么session与cookies的 区别是什么?个人认为session与cookies最核心区别在于额外信息由谁来维护。利用cookies来实现会 话管理时,用户的相关信息或者其他我们想要保持在每个请求中的信息,都是放在cookies中,而cookies 是由客户端来保存,每当客户端发出新请求时,就会稍带上cookies,服务端会根据其中的信息进行操 作。

    当利用session来进行会话管理时,客户端实际上只存了一个由服务端发送的session_id,而由这个 session_id,可以在服务端还原出所需要的所有状态信息,从这里可以看出这部分信息是由服务端来维护 的。

    除此以外,session与cookies都有一些自己的缺点:

    cookies的安全性不好,攻击者可以通过获取本地cookies进行欺骗或者利用cookies进行CSRF攻击。使 用cookies时,在多个域名下,会存在跨域问题。
    session 在一定的时间里,需要存放在服务端,因此当拥有大量用户时,也会大幅度降低服务端的性 能,当有多台机器时,如何共享session也会是一个问题.(redis集群)也就是说,用户第一个访问的时候 是服务器A,而第二个请求被转发给了服务器B,那服务器B如何得知其状态。实际上,session与 cookies是有联系的,比如我们可以把session_id存放在cookies中的。

    JWT是如何工作的

    首先用户发出登录请求,服务端根据用户的登录请求进行匹配,如果匹配成功,将相关的信息放入 payload中,利用算法,加上服务端的密钥生成token,这里需要注意的是secret_key很重要,如果这个 泄露的话,客户端就可以随机篡改发送的额外信息,它是信息完整性的保证。生成token后服务端将其 返回给客户端,客户端可以在下次请求时,将token一起交给服务端,一般是说我们可以将其放在 Authorization首部中,这样也就可以避免跨域问题。 

     
     
     
     
     
     

  • 相关阅读:
    矩阵补全(Matrix Completion)和缺失值预处理
    【机器学习基础】对 softmax 和 cross-entropy 求导
    Mendeley使用小技巧
    [Active Learning] Multi-Criteria-based Active Learning
    回归树(Regression Tree)
    Typora + Mathpix Snip,相见恨晚的神器
    【机器学习之数学】02 梯度下降法、最速下降法、牛顿法、共轭方向法、拟牛顿法
    【机器学习之数学】01 导数、偏导数、方向导数、梯度
    “卷积神经网络(Convolutional Neural Network,CNN)”之问
    一篇带你完全掌握线程的博客
  • 原文地址:https://www.cnblogs.com/sea-stream/p/13592346.html
Copyright © 2020-2023  润新知