Utilicé Spring Security en la pequeña aplicación web Scala. Lo creé cuando comencé a aprender Scala y traté de usar la pila completa de Java: Spring MVC + Spring + Spring Security + Hibernate + BlazeDS (también utilicé Flex en este proyecto para la interfaz). Ahora puedo decir que fue una experiencia realmente agradable y positiva. En general, la pregunta es qué tan buena Scala se integra con Spring e Hibernate. Tuve que usar @BeanProperty
o @BeanInfo
y colecciones java en entidades.
Pero no me he enfrentado a ningún problema real desde el lado de la seguridad de primavera. Funcionaba como se esperaba. Solo recuerdo un problema menor con Spring AOP: las clases de servicio publicaban sus métodos a través de BlazeDS a la aplicación flex. También los aseguré con las ACL del objeto de Spring Security (con <security:intercept-methods />
y <security:protect />
). Todo esto, por supuesto, es posible debido a la magia AOP. Así que noté el comportamiento de Spring AOP conectado: si su clase implementa algunas interfaces, usará los proxies de JDK para implementarlas y delegar todas las llamadas al destino, pero si la clase no implementa ninguna interfaz, usará cglib para extender su clase y delegar cada llamada al método. El problema es que mis clases de servicio público no implementan ninguna interfaz, pero el AOP no funcionaba correctamente. El motivo es la interfaz ScalaObject
que implementan todas las clases scala. Así que creé nuevos rasgos para todos los servicios públicos a fin de resolver este problema (no he encontrado ninguna forma de configurar Spring AOP - parece que este comportamiento está codificado).
Como puede ver, no es un problema utilizar Spring Security con Scala. Creo que debería ser aún más fácil usar Apache Shiro porque dice ser completamente independiente del contenedor o del entorno (escuché que es posible usar Spring Security fuera de Spring, pero también escuché que es bastante doloroso). Generalmente en Scala puedes archivar todo lo que puedas en Java. La pregunta es cuán bonito/idiomático/puro/código libre resultante sería libre.
Por cierto, hay un nuevo proyecto que integra Lift con Apache Shiro: lift-shiro. Here también puede encontrar small blog post al respecto.
Espero que esto ayude.
más información aquí: http://seventhings.liftweb.net/security – shellholic
Gracias por la respuesta, pero también estoy buscando enfoques generales, que son independientes del marco web –