我想要做的是在我的Play应用程序中实现一个简单的身份验证机制。与在Play ZenTask Tutorial中完成的不同,我认为在会话中存储经过身份验证的用户 的会话ID并不是一个好主意(在Play中,这是一个签名cookie),因为那时服务器没有对已经登录的用户的登录状态的任何控制。图像用户帐户被删除或者你想强制注销特定用户 - 如果这个用户有效cookie,他仍将在下一个请求中成功通过身份验证,因为服务器只会检查cookie中是否存在会话ID。
所以我想知道:使用Play缓存API存储用户的会话id怎么样?在每个页面请求中,可以在缓存中查找请求中包含的会话ID。如果不存在,那么用户必须登录。
从我的观点中获益:
您怎么看?
答案 0 :(得分:3)
我认为这是一种非常有效的方法,而且,举一个例子,play2-auth库提供了一种方法来使用CacheIdContainer。
作为作者points out,使用会话cookie的这种有状态方法的主要优点是,当用户登录其他地方时,它会使用户之前的会话无效。
主要的缺点是,至少如果你使用的是Play的默认EHCache
,那么会话不会在服务器重启时持续存在,但你可以使用类似memcache的东西来解决这个问题。