2010-08-24 8 views
5

Ich habe ein Jaas Login Modul implementiert, um eine Authentifizierung durchzuführen. Ich muss auf die Datenbank zugreifen, um Benutzer-/Ausweisinformationen innerhalb dieses Moduls abzurufen.Accesing Spring Kontext von jaas LoginModule

Im selben Projekt sind einige DAO-Beans implementiert, aber es ist nicht möglich, über das JAAS-Login-Modul auf den Spring-Kontext zuzugreifen, um die DAO-Bean abzurufen.

¿Wer könnte mir bitte helfen?

Ich verwende Spring Security, um Jaas in meine Anwendung zu integrieren.

+0

Haben Sie versucht SecurityContextHolder.getContext()? Was gibt das in Ihrem jaas-Login-Modul? –

Antwort

1

Wenn Sie Zugriff auf das LoginModule haben, fügen Sie einfach die Schnittstelle ApplicationContextAware und eine Bean-Definition für das LoginModule hinzu. Wenn die Anwendung gestartet wird, ist der Kontext innerhalb des Moduls verfügbar.

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

Javadoc für die Schnittstelle: http://static.springsource.org/spring/docs/3.0.5.RELEASE/api/org/springframework/context/ApplicationContextAware.html

+0

Das funktioniert zumindest mit Jetty 9. applicationContext ist null –

+1

@JuanCalero - der ApplicationContext muss ebenfalls statisch sein. Aus demselben Grund müssen die anderen Beans auch statisch sein, wenn Sie sie im LoginModule verwenden wollen - die Instanziierung wird von JAAS durchgeführt, so dass Spring's Dependency-Injection nicht einsetzt. – mmalmeida