2009-09-16 57 views
2

用Tomcat/Scala保持用户状态的最佳方式是什么?我的第一个想法是在任何时候都将会话信息保留在会话中,并且如果没有账户会话信息,则将用户重定向到登录页面。这是一种可行的模式,还是有一种更持久的用户信息更明智的方式?我试图复制一个基本的购物车网站,而我现在只是在考虑解决这个问题。通过Tomcat/Scala保持状态的最佳方式?

回答

2

有很多方法来剥皮这只猫。只要您的物品足够轻便(并且您的流量足够低),您就可以将信息存储在会话中。这可能是最简单的解决方案,但在需要缩放或群集时可能会遇到困难。

根据经验,Tomcat扩展,集群,db会话存储等对我而言并不是很好。

另一种方法是使用cookie管理自己的令牌。然后,将给定用户令牌的实际信息存储在服务器上。最幼稚的实现只需要一个内存映射,但是当你重新启动应用程序时,这会有失去所有数据的缺点。

您可以将信息保存到数据库,并在每次请求时使用用户令牌(可能使用某种缓存策略)进行查找。这也允许您扩展到多个应用程序服务器,而不必过多关注集群 - 每个实例只查找用户令牌并在共享数据库上执行查找请求。

如果您将实际的实现包装在一个漂亮的界面后面,您可以从简单/便宜的会话解决方案开始,如果以后需要,可以逐步转向更复杂的实现。需要注意的是,您必须格外小心,不要在第一次执行时将servlet特定信息泄露到接口中。

相关问题