2010-08-24 5 views
5

J'ai implémenté un module de connexion Jaas, afin d'effectuer l'authentification. Je dois accéder à la base de données pour récupérer les informations utilisateur/passe dans ce module.Accéder au contexte de printemps à partir de jaas LoginModule

Dans le même projet, il existe certains beans DAO implémentés, mais il est impossible d'accéder au contexte Spring à partir du module de connexion jaas pour récupérer le bean DAO.

¿Quelqu'un pourrait m'aider s'il vous plaît? J'utilise Spring Security pour intégrer Jaas dans mon application.

+0

Avez-vous essayé SecurityContextHolder.getContext()? Qu'est-ce que cela renvoie dans votre module de connexion jaas? –

Répondre

1

Si vous avez accès au LoginModule, ajoutez simplement l'interface ApplicationContextAware et une définition de bean pour le LoginModule. Lorsque l'application démarre, le contexte sera disponible dans le module.

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

Javadoc pour l'interface: http://static.springsource.org/spring/docs/3.0.5.RELEASE/api/org/springframework/context/ApplicationContextAware.html

+0

Cela ne fonctionne pas, au moins avec Jetty 9. applicationContext est null –

+1

@JuanCalero - le ApplicationContext doit également être statique. C'est pour la même raison que les autres beans doivent être statiques si vous voulez les utiliser dans le LoginModule - l'instanciation est effectuée par JAAS, donc l'injection de dépendance de Spring ne démarre pas. – mmalmeida

Questions connexes