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

时间:2017-12-23 23:47:22

标签: javascript reactjs express session

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

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

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

2 个答案:

答案 0 :(得分:3)

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

  1. 在客户端上,设置HTTP客户端以将sessionID作为header传递。您可以使用header等HTTP客户端或ES6中的axios设置自定义fetch,并将这些header应用于发送到Express API的每个请求。< / p>

  2. 在您的应用上设置一个中间件功能,该功能将在服务器收到的每个请求上运行。 Express可以使用app.all("*", yourAuthFunction)轻松完成此操作。您还可以查看app.use将中间件应用于更具体的路由。这将确保在响应客户端发送任何数据之前,在服务器上验证您的sessionID。当然,您必须编写auth功能来处理您的喜好。

  3. 祝你好运!

答案 1 :(得分:0)

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