Ho un servizio per ottenere e impostare l'utente nella sessione. Vorrei passare alcune informazioni utente a ciascuna vista se c'è un utente che ha effettuato l'accesso e ho pensato che un filtro sarebbe il modo migliore, quindi non devo duplicarlo in ogni controller/azione. Quando eseguo l'applicazione, si ottiene questo errore:Posso iniettare un servizio in un filtro in Grails?
Error creating bean with name 'userService': Scope 'session' is not active for the current thread
mio filtro simile a questa:
class SecurityFilters {
def userService
def filters = {
setUser(controller:'*', action:'*') {
before = {
if (userService.isLoggedIn()) {
request.user = userService.getUser()
} else {
request.user = null
}
}
}
}
}
So che posso solo in ultima analisi, accedere l'utente attraverso session.user, ma voglio essere in grado di chiamare userService.isLoggedIn() che non riesco facilmente a visualizzare. Quindi c'è un modo per iniettare il servizio nel filtro, o dovrei semplicemente creare un taglib per avvolgere userService.isLoggedIn()?
Bene, la risposta era no, non posso. Ho aggiunto un commento che apparentemente è stato cancellato dicendo che non potevo e fornito un approccio diverso. – varikin