我正在构建一个页面反应应用程序,它使用redux作为状态管理器,使用快速节点js作为后端服务器,但我不知道在应用程序中授权我的用户的最佳方法是什么!
如果它是一个php或快递-js网站,我可以使用PHPSESSION或快速会话来管理用户会话数据,但现在单页web应用程序与后端分离,我不能像以前那样管理会话!
我的想法是为每个新的web请求创建一个会话id,然后将其保存到本地存储中,然后在服务器中将所有所需的信息存储在数据库中,当应用程序有API调用时,将该id发送到请求头中。然后,我们可以使用该实现的会话来检查授权。
但我想,如果有更简单的方法来处理这个问题,而不需要自己进行会话实现的话。
(我不想使用诸如firebase或okta之类的第三方服务,也不想将所有会话数据保存在客户端部分,比如JWT。)
发布于 2019-12-12 12:37:55
最后,我实现了一个自定义会话管理器( SessionMush ),因此客户端向服务器发送一个请求并获得一个令牌id,然后使用它在服务器中访问其会话。
每个会话都应该可以通过标识令牌(此处称为sid )访问,因此应用程序可以保存该令牌以访问和使用该会话。您的应用程序的服务器端状态可以用于保存客户端的状态或任何您希望在服务器端使用的客户端临时数据,因此在应用程序中,您将保存该标识令牌,然后在每个请求中将其发送到http头中,然后服务器将根据数据库中保存的会话数据(该id的服务器端状态)知道您是谁以及您以前在应用程序上做了什么,这样它就可以根据客户端标识和服务器上的状态为您提供所需的信息。它作为快速中间件创建,mongodb作为数据存储。
当您的应用程序没有会话并首次加载时,当接收到服务器的请求时,它会向服务器发送请求以获得标识,服务器将分析该请求,并发现没有任何会话id (sid),因此它将为该请求创建一个新的会话id(Sid),并将其添加到响应标头部分,这样,当服务器决定发送响应时,它也会发送创建的会话信息。客户端应该保存这些信息,以便将该会话用于其其他请求。它可以在请求头部分发送该id以显示其标识。当一个会话没有在阈值时间内使用时,它也可以过期。因此,当服务器出现错误或过期的会话时,它的行为就像一个没有会话的请求,因此它将为该请求创建一个会话,并像我们前面解释的那样发送它的信息。

https://stackoverflow.com/questions/59228471
复制相似问题