python - Flask-Session逻辑和JWT类似吗
问题描述
我有一个关于烧瓶会话逻辑的问题。首先,据我所知有两种存储会话数据的方法,一种是在客户端,另一种是在服务器端。据我所知,Flask 使用的是前者(客户端),其中会话被加密并存储在客户端的浏览器中。
假设我们要在烧瓶后端登录
- 用户登录,flask 生成会话并通过 set-cookie 客户端存储会话
- 用户向后端发出另一个请求,并将其 cookie 发送到存储会话的位置,flask 使用用于加密会话的密钥验证会话
- 当会话有效时,flask 会加载会话,这意味着用户已登录
据我所知,智威汤逊的工作方式如下。它生成一个令牌,客户端存储令牌并在每个请求中将其发送到服务器,在服务器上验证令牌。
据我所知,flask 和 JWT 都使用秘密来加密数据。
那么我们可以说,flask-session 和 JWT 在某种程度上相似吗?
解决方案
jwt 和烧瓶会话都在客户端上工作,但关键区别在于烧瓶会话将签名的会话数据存储在客户端 cookie 中,但在 jwt 中,您可以独立地将令牌存储在您想要的任何地方,例如 localstorage、cookie 等。
jwt 默认为base64 编码,而在烧瓶会话中,为安全起见,必须手动完成。但是是的,传统会话(例如 php)和烧瓶会话之间的区别在于会话数据存储在客户端中,而不是作为服务器上的文件(而客户端 cookie 在传统会话中具有会话 ID)。
推荐阅读
- javascript - 组件未从 ReactJS 呈现
- javascript - Gatsby 中的 Snap.svg 缓动
- asp.net - 加密的连接字符串不能跨服务器工作
- stripe-payments - 如何从 localhost:4200 从我的 webapp 进行真正的购买?
- ruby - 如何在 OneLogin Ruby 元数据 xml 中返回多种 nameId 格式?
- python - 你可以从两个 np.float 一维数组创建一个 np.complex128 一维数组而不复制吗?
- jquery - FullCalendar 上的默认值(拖放事件)
- r - 如何为这些数据创建循环?
- python - 从数组中删除对象而不会过冲
- java - 在 k8s yaml 文件中将布尔变量作为 env、secret 或 configmap 传递