Grails 2.1.1 и пружинные сообщения безопасности
Кто-нибудь испытывает сообщения об ошибках при неудачных входах в систему?
Я обновляю приложение Grails 1.3.7 до версии 2.1.1, и у меня есть 2 проблемы с функциональностью ядра безопасности Spring.
Во-первых, если я попытаюсь ввести неверный логин, аутентификация завершится неудачно, но во флэш-сообщении не будет сообщения об ошибке просто {}.
Во-вторых, я использовал такой метод, чтобы получить текущее количество активных сеансов. Он больше не является точным, поскольку он просто увеличивается и не распознает выход из системы.
def getCurrentSessionCount(){
def sessioncount = 0
sessionRegistry.getAllPrincipals().each{
sessioncount += sessionRegistry.getAllSessions(it, false).size()
}
return sessioncount;
}
1 ответ
Хорошо, это была разница в LoginController в том, как заполнялись сообщения об ошибках. В 1.3.7 и предыдущем плагине безопасности код выглядит так:
msg = SpringSecurityUtils.securityConfig.errors.login.expired
но для 2.1.1 и обновленного весеннего плагина безопасности 1.2.7.3 код должен использовать такой контекст:
msg = g.message(code: "springSecurity.errors.login.disabled")
Счетчик сеансов связан с модификацией файла web.xml, которую необходимо внести для добавления прослушивателя сеанса, однако в новой версии Spring 3.0 он был перемещен, поэтому новая запись должна выглядеть следующим образом:
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>