使用 Tomcat/Scala 保持用户状态的最佳方法是什么?我的第一个想法是始终保留会话中的帐户信息,如果帐户会话中没有信息,则将用户重定向到登录页面。这是一个可行的模型,还是有更聪明的方式来保存用户信息?我正在尝试复制一个基本的购物车网站,而我现在只是在思考这个问题。
问问题
441 次
1 回答
2
有很多方法可以给这只猫剥皮。您可以将您的信息存储在会话中,前提是您的对象重量足够轻(并且您的流量足够低)。这可能是最简单的解决方案,但是当您需要扩展或集群时可能会遇到困难。
从经验来看,Tomcat 缩放、集群、数据库会话存储等对我来说效果并不好。
另一种方法是使用 cookie 管理您自己的令牌。然后,您将给定用户令牌的实际信息存储在服务器上。最幼稚的实现只是有一个内存中的 Map ,但这样做的缺点是在您重新启动应用程序时会丢失所有数据。
您可以将信息保存到数据库并在每个请求上使用用户令牌进行查找(可能使用一些缓存策略)。这还允许您扩展到多个应用服务器,而无需过多关注集群 - 每个实例只需查找用户令牌并在共享数据库上执行查找请求。
如果您将实际实现包装在一个漂亮的接口后面,您可以从简单/便宜的会话解决方案开始,如果以后需要,逐渐转向更复杂的实现。一个警告是,您必须格外小心,不要在第一次实现时将特定于 servlet 的信息泄漏到接口中。
于 2009-09-16T22:45:03.253 回答