使用Tomcat / Scala保持用户状态的最佳方法是什么?我的第一个想法是始终在会话中保留帐户信息,如果没有关于帐户会话的信息,则将用户重定向到登录页面。这是一个可行的模型,还是有更智能的方法来保存用户信息?我正在尝试复制一个基本的购物车网站,我现在只是在思考这个问题。
答案 0 :(得分:2)
有很多方法可以给这只猫上皮。您可以将信息存储在会话中,前提是您的对象足够轻(并且您的流量足够低)。这可能是最简单的解决方案,但是当您需要扩展或集群时,可能会遇到困难。
根据经验,Tomcat扩展,集群,数据库会话存储等对我来说效果不佳。
另一种方法是使用cookie管理您自己的令牌。然后,您将在服务器上存储给定用户令牌的实际信息。最天真的实现只是有一个内存中的Map,但是当你重新启动应用程序时,这会有失去所有数据的缺点。
您可以将信息保存到数据库,并在每个请求(包括某些缓存策略)上使用用户令牌进行查找。这也允许您扩展到多个应用服务器而不必太过担心群集 - 每个实例只是查找用户令牌并在共享数据库上执行查找请求。
如果你将实际的实现包装在一个漂亮的界面后面,你可以从简单/廉价的会话解决方案开始,如果你以后需要逐渐转向更复杂的实现。需要注意的是,在第一次实现时,您必须特别注意不要将servlet特定信息泄漏到界面中。