使用 React 和 Pyramid(微服务架构)进行身份验证,如何存储“会话数据”?

Posted

技术标签:

【中文标题】使用 React 和 Pyramid(微服务架构)进行身份验证,如何存储“会话数据”?【英文标题】:Authentication using React and Pyramid (microservices architecture), how to store "session data"? 【发布时间】:2019-02-28 10:43:17 【问题描述】:

你好吗? 我..?嗯,我有麻烦了,哈哈!

我在一个项目中使用微服务 API 架构,其中 API 和 GatewayAPI 是使用 Python 的 Pyramid 框架开发的,主前端是使用 React 构建的。 简单的工作流程说明:https://imgur.com/ifRLLOo

问题是:我在哪里可以安全地存储经过身份验证的“会话数据”,例如用户名、用户 ID、名字?登录后,我不想为了获取这些会经常使用的信息而向用户的API发出新的请求。

我知道我可以将这些编码数据存储在JWT token 中,并将令牌存储在cookieslocalStorage 中,但这是正确的位置吗?这是正确的过程吗? 如果这是正确的位置,我是否需要每次都将解码后的数据作为 GatewayAPI 响应的一部分发送到前端?

感谢您的阅读,希望你们能救救我!

【问题讨论】:

不能只保存在会话中吗?例如,像 'session=request.session' 并保存在像 'session['something'] =something' 这样的会话中。会话可以存储在 cookie 中,也可以使用 redis 存储在服务器端。只需确保身份验证超时与会话同步即可。 【参考方案1】:

您可以将 JWT 存储在 cookie 或 localStorage 中,这无关紧要。我个人在 localStorage 中这样做。

关于解码数据的问题,由后端处理。您需要做的就是在每个 API 调用中包含 JWT,API 将知道哪个用户正在调用,而无需将数据发送回和堡垒。

我还建议您创建具有到期日期的令牌以增加安全性。

例子你可以看看pyramid_jwt

【讨论】:

非常感谢!我们决定使用 Flask 代替 Pyramid,但我们确实如你所说!将JWT添加到localStorage,数据解码由后端完成。

以上是关于使用 React 和 Pyramid(微服务架构)进行身份验证,如何存储“会话数据”?的主要内容,如果未能解决你的问题,请参考以下文章

Airbnb 的微服务架构

ivx杨帆启航React/Pixi.js/FaaSKrpano及微服务架构

SpringCloud 微服务架构,适合接私活(附源码)

SpringCloud 微服务架构,适合接私活(附源码)

BladeX——精心设计的微服务架构

spring cloud微服务分布式云架构 - 整合架构的技术点