Pregunta

¿Cuál es la mejor manera de persistir el estado del usuario con Tomcat / Scala? Mi primer pensamiento es mantener la información de la cuenta en la sesión en todo momento y redirigir al usuario a una página de inicio de sesión si no hay información sobre la sesión para la cuenta. ¿Es este un modelo viable o hay una forma más inteligente de persistir la información del usuario? Estoy tratando de replicar un sitio básico de carrito de compras, y solo estoy pensando en el problema en este momento.

¿Fue útil?

Solución

Hay muchas maneras de desollar a este gato. Puede almacenar su información en la sesión, siempre que sus objetos sean lo suficientemente livianos (y sus volúmenes de tráfico sean lo suficientemente bajos). Esta es probablemente la solución más fácil, pero puede tener dificultades cuando necesite escalar o agrupar.

Por experiencia, el escalado de Tomcat, la agrupación en clúster, el almacén de sesiones de db, etc., no funcionó muy bien para mí.

Otra forma sería administrar su propio token con una cookie. Luego almacena la información real de un token de usuario determinado en el servidor. La implementación más ingenua simplemente tendría un mapa en memoria, pero esto tendrá el inconveniente de perder todos los datos cuando reinicie la aplicación.

Puede conservar la información en la base de datos y realizar una búsqueda con el token del usuario en cada solicitud (tal vez con alguna estrategia de almacenamiento en caché). Esto también le permite escalar a múltiples servidores de aplicaciones sin demasiada preocupación por la agrupación: cada instancia simplemente busca el token del usuario y realiza una solicitud de búsqueda en la base de datos compartida.

Si ajusta la implementación real detrás de una interfaz agradable, podría comenzar con la solución de sesión fácil / barata y gradualmente pasar a una implementación más compleja si lo necesita más adelante. Una advertencia es que deberá tener especial cuidado de no filtrar información específica del servlet en la interfaz en su primera implementación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top