java如何从管理面板终止所有用户的会话
我正在使用scala 2.2
和play-framework 2.2
我不知道这是否可能,但我必须强制所有用户退出该网站。我知道这对我没有帮助
Redirect("/").withNewSession
你可以在下面搜索框中键入要查询的问题!
我正在使用scala 2.2
和play-framework 2.2
我不知道这是否可能,但我必须强制所有用户退出该网站。我知道这对我没有帮助
Redirect("/").withNewSession
# 1 楼答案
一次性注销所有用户确实是可能的。方法是获取用于跟踪用户的信息,并在服务器上使其无效。使用传统的会话管理方法,包括发布tokens,这非常简单。然而,基于this comment,听起来你并不是在服务器端发行代币,在这种情况下,你需要考虑一些不同的东西
使用令牌进行会话管理
会话管理的传统方法是在成功进行身份验证时从服务器发出令牌。假设您将用户存储在数据库表中。在他们登录之前,他们没有令牌:
一旦用户成功登录,服务器将生成一个令牌(也称为会话ID),并将其放入该用户的记录中:
服务器还将此令牌放入用户的cookie中,因此它现在看起来像:
然后使用该令牌跟踪用户。每次有人向网站发送请求时,服务器上的一层代码都会执行以下检查:
当用户注销时,在登录时执行的操作将被反转。令牌列在数据库中的记录中被清除:
然后从他们的cookie中删除令牌:
现在让我们回到注销所有用户。这可以通过清除数据库表中所有用户的
token
列来实现。这是一个可以通过HTTP POST请求从网站管理员部分的屏幕上执行的操作。清除该列将导致上述伪代码块中提到的if条件对所有用户都失败不带令牌的会话管理
代币的好处在于,它们可以在没有任何其他副作用的情况下被清除。cookie中存储的内容的问题是,使这些值(用户ID和用户名)无效会产生非常严重的副作用。我给你的建议是转向基于令牌的方法。最重要的是,您的方法不是很安全,因为您的cookie可能是replayed:
如果出于某种原因,您无法将会话管理方法更改为基于令牌的,那么您可以向站点介绍其他东西,以模拟令牌给您带来的可能性。然而,这些都是黑客,所以我不打算提出它们!再一次,我会使用代币