会议,验证和操纵之外的请求



我的应用程序在登录时将用户的文档从数据库加载到redis会话中。然后,它几乎对会话对象的请求进行了所有验证。

The problem:修改请求/响应周期之外的正在进行的会话以更新验证信息。

例如,如果用户订阅了博客文章类别,并且他们可以阅读该类别中的帖子并为该类别做出贡献。但是,如果该类别的主持人决定删除它,那么我不仅需要从磁盘上的数据库中的用户文档中删除该类别,还需要从Redis中的用户会话中删除该类别。

据我所知,我唯一可以做到这一点的方法是保存对数据库中用户文档中的会话ID的引用,并在Redis中查找相应的会话。

问题是,我不确定会议是否被设计在请求/响应周期之外进行修改,因为当我进行Google搜索时,我真的没有看到想要这样做的任何相关主题。

我不认为在mongo上存储有关会话的信息是个好主意。如果用户同时从两个设备登录用户会发生什么?我想在这种情况下您将有两个会话对象(否则,应该有一种猜测给定用户的会话的机制,然后您将没有当前的问题)。

我的建议将存储在Redis中,用户开始的会话集。当用户登录时,您将新的会话ID添加到带有用户ID的集合中,作为密钥的一部分。当用户注销时,您可以从集合中删除相应的条目。

当然,您的会话问题在没有手动登录的情况下到期(如果您具有该行为)。为此,您可以每次启动新的会话时都设置为用户集。只要您的设定时间比会话到期时间更长,您就可以确保会话存储在您的集合中,只要您的会话存在。

REDIS的新版本将具有一个观察命令,这将使删除从设定对象中删除的会话更容易。您只需要观察会话对象的创建/删除,就可以根据此操作管理集合插入/删除。在该命令是正式的之前,您必须坚持按时间到期。

最新更新