如何使用户的所有httpsession无效?

时间:2016-05-24 12:10:31

标签: android tomcat oauth-2.0 httpsession invalidation

我正在开发一个拥有自己的日志记录系统的应用程序。 我在Tomcat中使用servlet作为服务器端。 当用户注册到我的应用程序时,我会创建一个访问令牌和刷新令牌,并将它们发送给用户。 在使用应用程序时,用户提供访问令牌,如果:

  • 过期,服务器请求刷新令牌(如果有效,则服务器发出另一个访问令牌;
  • 无效,服务器响应为invalid_access,用户已注销。

我使用httpsession来"存储"服务器端的用户会话,此处存储用户信息(如访问令牌)和刷新令牌以验证请求。 现在,在我的数据库中,我有一个用户表和一个令牌表(每行有一个刷新令牌,访问令牌,过期和用户参考)。

当用户登录时,服务器端创建访问和刷新令牌,并创建httpsession并将其存储在http会话中。

因此,如果用户使用两个不同的设备登录,则用户将拥有两个httpsession服务器端,这就是我想要的(多会话运行良好)。

但是,如果我在用户设备中更改密码,我希望所有其他会话都无效,并且DB中的令牌也会失效。

但是,在我的解决方案中,服务器没有提供,因为如果用户更改了他的密码,唯一无效的httpsession是与他自己的设备的cookie相关联的httpsession,如果我更改DB中的令牌,与其他设备的其他请求将仅在他们自己的会话中检查令牌(这似乎是有效的)。

现在的问题是,我怎样才能使与用户相关的其他httpsession无效?我应该将它们存储在数据库中吗?因此,当changin密码使它们全部无效时?

0 个答案:

没有答案
相关问题