2009-09-16 7 views
2

Quelle est la meilleure façon de conserver l'état de l'utilisateur avec Tomcat/Scala? Ma première idée est de garder à tout moment les informations de compte sur la session et de rediriger l'utilisateur vers une page de connexion s'il n'y a aucune information sur la session pour le compte. Est-ce un modèle viable ou existe-t-il un moyen plus intelligent de conserver l'information de l'utilisateur? J'essaie de reproduire un site de base de panier d'achat, et je pense juste à travers le problème en ce moment.Meilleur moyen de conserver l'état avec Tomcat/Scala?

Répondre

2

Il existe de nombreuses façons de peler ce chat. Vous pouvez stocker vos informations dans la session, à condition que vos objets soient assez légers (et que votre volume de trafic soit suffisamment bas). C'est probablement la solution la plus simple, mais vous pouvez rencontrer des difficultés lorsque vous avez besoin d'une mise à l'échelle ou d'un cluster. Par expérience, la mise à l'échelle de Tomcat, le clustering, le magasin de sessions db, etc. ne fonctionnaient pas très bien pour moi.

Une autre façon serait de gérer votre propre jeton avec un cookie. Vous stockez ensuite les informations réelles pour un jeton d'utilisateur donné sur le serveur. L'implémentation la plus naïve aurait simplement une carte en mémoire mais cela aura l'inconvénient de perdre toutes les données lorsque vous redémarrerez l'application.

Vous pouvez conserver les informations dans la base de données et effectuer une recherche avec le jeton utilisateur à chaque requête (avec éventuellement une stratégie de mise en cache). Cela vous permet également d'évoluer vers plusieurs serveurs d'applications sans trop vous préoccuper de la mise en cluster: chaque instance recherche simplement le jeton d'utilisateur et effectue une recherche sur la base de données partagée.

Si vous intégrez l'implémentation réelle derrière une interface sympa, vous pouvez commencer avec la solution de session facile/bon marché et passer progressivement à une implémentation plus complexe si vous en avez besoin plus tard. Une mise en garde est que vous devrez faire très attention à ne pas divulguer d'informations spécifiques aux servlets dans l'interface de votre première implémentation.

Questions connexes