Tengo un servicio para obtener y configurar al usuario en la sesión. Me gustaría pasar algo de información del usuario a cada vista si hay un usuario conectado y pensé que un filtro sería la mejor manera para que no tenga que duplicar eso en cada controlador/acción. Cuando ejecuto la aplicación, que sale este error:¿Puedo inyectar un servicio en un filtro en Grails?
Error creating bean with name 'userService': Scope 'session' is not active for the current thread
Mi filtro se ve así:
class SecurityFilters {
def userService
def filters = {
setUser(controller:'*', action:'*') {
before = {
if (userService.isLoggedIn()) {
request.user = userService.getUser()
} else {
request.user = null
}
}
}
}
}
Sé que puedo solo en última instancia, acceder al usuario a través session.user, pero yo quiero estar capaz de llamar a userService.isLoggedIn() que no puedo acceder fácilmente a través de la vista. Entonces, ¿hay alguna manera de inyectar el servicio en el filtro, o debería simplemente crear un taglib para ajustar userService.isLoggedIn()?
Bueno, la respuesta fue no, no puedo. Agregué un comentario que aparentemente fue borrado diciendo que no podía y proporcioné un enfoque diferente. – varikin