Я частично реализовал решение, используя фильтр Grails и прослушиватель сеанса, что потребовало от меня изменения файла web.xml. Слушатель сеанса сообщает мне, когда сеанс закончился, и фильтр grails сообщает мне, когда какой-либо контроллер был вызван впервые с аутентифицированным пользователем.
Мне показалось, что оба требовались, потому что либо grails, либо плагин acegi автоматически создают новый сеанс, поэтому мне потребовался фильтр grails, чтобы определить, когда сеанс действительно имеет аутентифицированного пользователя.
Я говорю все это, чтобы сказать, есть ли более простой подход, который не требует фильтра и sessionListener. Просто хочу очистить код, чтобы, когда мне понадобится вернуться к нему позже, все равно будет иметь смысл