我有一个带有用Express编写的后端API的React应用程序(所有/ api调用都在那里代理)。
成功进行用户身份验证后,我将生成一个会话ID并将其存储在客户端的某个位置,以便我以后可以对API进行授权。
在Express方面实施此架构的最佳做法是什么?我应该只发送会话ID和每个API请求的主体,然后在所有后端调用之前使用授权机制吗?或者有更好/更简单的方法吗?
答案 0 :(得分:3)
我的直觉是采取两个步骤。
在客户端上,设置HTTP客户端以将sessionID作为header
传递。您可以使用header
等HTTP客户端或ES6中的axios
设置自定义fetch
,并将这些header
应用于发送到Express API的每个请求。< / p>
在您的应用上设置一个中间件功能,该功能将在服务器收到的每个请求上运行。 Express可以使用app.all("*", yourAuthFunction)
轻松完成此操作。您还可以查看app.use
将中间件应用于更具体的路由。这将确保在响应客户端发送任何数据之前,在服务器上验证您的sessionID。当然,您必须编写auth功能来处理您的喜好。
答案 1 :(得分:0)
当用户成功通过身份验证(它应该在页面加载时随时进行身份验证)时,应该向其发送响应(包含session token
)。
每个其他请求都应使用在身份验证响应中收到的session token
进行身份验证。
您可以将此标记值存储到隐藏输入<input name="session" type="hidden" />