删除无状态应用程序

问题描述 投票:0回答:1
我的项目结构是什么样子

    UI:AngularjsApp
  • 后端:Java + MongoDB无状态应用程序
  • UI对给定的用户进行身份验证,而REST API用JWT令牌进行响应。对于每个后续请求,REST API都期望标题中的令牌,如果不存在,则返回错误。

现在,什么是实现

Unautorized
功能的最佳方法?很明显,我将从UI Cookie中删除令牌。但是我需要告诉服务器用户已登录。

i我正在考虑维护内存DB,以跟踪谁登录后已登录并将用户从内存中删除,但这会使该应用程序具有某种状态(我猜)。而且,扩展应用程序可能会变得复杂,因为我必须在所有节点上复制内存用户。

对于每个休息电话,我都从mongodb获取用户详细信息。使用DB存储已记录的状态是否有意义?我只是大声地思考。因为我不知道要朝什么指示。 

如果您使用JWT维护会话客户端,那么服务器应该没有登录和登录用户的概念。

这是您决定使用JWT的价格(当然可以,这取决于您对申请的风险需求)。
rest security stateless
1个回答
4
投票
替代方法是为每个会话创建一个唯一的ID并将其存储在JWT中(例如数字,顺序)。您在服务器上维护撤销列表,当用户注销(或用户帐户锁定)时,您将ID写入此列表。现在,您不想为每个请求检查此列表,但是您可以为改变状态的动作做。这是服务器端和客户端会话身份验证之间的平衡方法。

您可以在用户会话中删除ID ID,并认为该ID已定时发布(您还需要跟踪针对每个ID的预期到期,并在刷新令牌使用时进行更新)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.