如何授权Web应用程序和管理会话

问题描述 投票:0回答:1

我正在构建一个使用redux作为状态管理器,将快速节点js作为后端服务器的单页反应应用程序,但是我不知道在应用程序中授权用户的最佳方法是什么!

如果是PHP或express-js网站,我可以使用PHPSESSION或express-session来管理用户会话数据,但是现在单页Web应用程序与后端分离了,我无法像以前一样管理会话!

[我的想法是为每个新的Web请求创建一个会话ID,然后将其保存在本地存储中供客户端使用,然后在服务器中将所有需要的信息存储在数据库中,并且当应用程序具有API调用时,在请求标头中发送该ID 。然后,我们可以使用该已实现的会话来检查授权。

但是我想如果有一种更简单的方法来解决此问题,而无需我自己进行会话实现。

((我不想使用第三方服务(例如firebase或okta或将所有会话数据保存在客户端部分(例如JWT中)。)

express session redux web-applications authorization
1个回答
0
投票

最后,我实现了一个自定义会话管理器(SessionMush,因此客户端向服务器发送请求并获取令牌ID,然后使用它来访问服务器中的会话。

每个会话都应该可以通过标识令牌(在这里称为sid)进行访问,因此应用程序可以保存该令牌以访问和使用该会话。您的应用程序的服务器端状态可以用于保存客户端身份验证状态或您要在服务器端使用它们的有关客户端的任何临时数据,因此在您的应用程序中,您将保存该标识令牌,然后随着每个请求将其发送到HTTP标头,然后服务器将基于数据库中保存的会话数据(该ID的服务器端状态)知道您是谁,以及您之前在应用程序上做了什么,因此它可以根据客户端身份为您提供所需的信息,它在服务器上的状态。它被创建用作快速中间件,而mongodb用作数据存储。

当您的应用程序没有会话并且第一次加载时,它将向服务器发送请求以获取其自身的身份。当请求接收到服务器时,服务器会分析该请求,并且会发现没有该请求存在任何会话ID(sid),因此它将为此请求创建一个新会话ID,并将其添加到响应标头部分,因此,当服务器决定发送响应时,它也会发送已创建的会话信息。客户应保存该信息以将该会话用于其其他请求。它可以在请求标头部分发送该ID以显示其标识。如果会话在一定时间内未使用,则会话也可能过期。因此,当服务器出现错误或过期的会话时,它将像没有任何会话的请求一样表现出来,因此它将为该请求创建一个会话并发送其信息,就像我们之前解释的一样。

enter image description here

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