使用Express.js后端API处理React中的会话

问题描述 投票:3回答:2

我有一个带有用Express编写的后端API的React应用程序(所有/ api调用都在那里代理)。

成功进行用户身份验证后,我将生成会话ID并将其存储在客户端的某个位置,以便稍后我可以对API进行授权。

在Express方面实施此架构的最佳做法是什么?我应该只发送会话ID和每个API请求的主体,然后在所有后端调用之前使用授权机制吗?或者有更好/更简单的方法吗?

javascript reactjs express session
2个回答
3
投票

我的直觉是采取两个步骤。

  1. 在客户端上,设置HTTP客户端以将sessionID作为header传递。您可以使用header等HTTP客户端或ES6中的axios设置自定义fetchs,并将这些headers应用于发送到Express API的每个请求。
  2. 在您的应用上设置一个中间件功能,该功能将在服务器收到的每个请求上运行。 Express使用app.all("*", yourAuthFunction)可以轻松实现此目的。您还可以查看app.use将中间件应用于更具体的路线。这将确保在响应客户端发送任何数据之前,在服务器上验证您的sessionID。当然,你必须编写auth函数来运行你喜欢的方式。

祝好运!


0
投票

当用户成功通过身份验证(它应该在页面加载时随时进行身份验证)时,应该向其发送响应(包含session token)。每个其他请求都应使用在身份验证响应中收到的session token进行身份验证。您可以将此标记值存储到隐藏输入<input name="session" type="hidden" />

© www.soinside.com 2019 - 2024. All rights reserved.