使用 Play 缓存 API 来存储用户会话 ID?

Using the Play cache API for storing user session ids?

我想做的是在我的 Play 应用程序中实现一个简单的身份验证机制。与 Play ZenTask Tutorial 中的做法不同,我认为将经过身份验证的用户的会话 ID 单独 存储在会话中(在 Play 中, 是一个签名的cookie),因为这样服务器就无法控制已经登录的用户的登录状态。想象一个用户帐户被删除或者你想强制注销一个特定的用户——以防这个用户有一个有效的 cookie,他仍然会在下一个请求时成功通过身份验证,因为服务器只会检查 cookie 中是否存在会话 ID。

所以我想知道:使用 Play 缓存 API 来存储用户的会话 ID 怎么样?在每个页面请求中,可以在缓存中查找请求中包含的会话 ID。如果不存在,则用户必须登录。

我认为的好处:

你怎么看?

我认为这是一种完全有效的方法,举个例子,play2-auth library provides a way to do this with its CacheIdContainer

作为那里的作者 points out 与使用会话 cookie 的方法相比,这种有状态方法的主要优势在于,当用户在其他地方登录时,它会使用户之前的会话无效。

主要缺点,至少如果您使用 Play 的默认设置 EHCache,是会话不会在服务器重新启动后持续存在,但您可以使用诸如内存缓存之类的东西来解决这个问题。