2010-08-24 13 views
5

Implementé un módulo de inicio de sesión de Jaas para realizar la autenticación. Debo acceder a la base de datos para recuperar información de usuario/contraseña dentro de este módulo.Acceso contexto de primavera de jaas LoginModule

En el mismo proyecto, existen algunos beans DAO implementados, pero es imposible acceder al contexto de Spring desde el módulo de inicio de sesión jaas, para recuperar el bean DAO.

¿Alguien podría ayudarme por favor?

Estoy usando Spring Security para integrar Jaas en mi aplicación.

+0

¿Usted ha intentado SecurityContextHolder.getContext()? ¿Qué devuelve esto dentro de su módulo de inicio de sesión jaas? –

Respuesta

1

Si tiene acceso al LoginModule, simplemente agregue la interfaz ApplicationContextAware y una definición de bean para el LoginModule. Cuando se inicia la aplicación, el contexto estará disponible dentro del módulo.

public class LoginModule implements ApplicationContextAware { 
    private ApplicationContext applicationContext; 
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 
     this.applicationContext = applicationContext; 
    } 
}

Javadoc de la interfaz: http://static.springsource.org/spring/docs/3.0.5.RELEASE/api/org/springframework/context/ApplicationContextAware.html

+0

Eso no funciona, al menos con Jetty 9. applicationContext es nulo –

+1

@JuanCalero - ApplicationContext también debe ser estático. Esto es por la misma razón por la que los otros beans también deben ser estáticos si desea usarlos en el LoginModule: JAAS realiza la instanciación, por lo que la inyección de dependencia de Spring no se activa. – mmalmeida

Cuestiones relacionadas