Плагин безопасности Grails Spring - проблема с именем пользователя

В настоящее время я работаю с Grails и плагином Spring Security и пытаюсь реализовать рабочий процесс истечения срока действия пароля. Я настроил плагин, как и ожидалось:

grails.plugins.springsecurity.failureHandler.exceptionMappings = [
    'org.springframework.security.authentication.CredentialsExpiredException': '/login/passwordExpired'
]

и в моем действии passwordExpired, если я позвоню:

def username = session['SPRING_SECURITY_LAST_USERNAME']

затем в имени пользователя экранируются специальные символы HTML, как

my_user => my_user
my-user => my-user

Можно ли отключить этот выход?

Ritesh упомянул здесь spring_security_last_username, что SPRING_SECURITY_LAST_USERNAME устарел, так что еще я могу использовать?

За любую помощь, спасибо заранее!

2 ответа

Решение

Строка 'SPRING_SECURITY_LAST_USERNAME' не считается устаревшим - старая константа с этим значением является и была перемещена с новым именем, но с тем же значением. Таким образом, ваш код будет продолжать действовать.

Вместо того, чтобы изменить вещи, чтобы не сбежать, вы можете легко убежать:

import org.apache.commons.lang.StringEscapeUtils
...
String username = StringEscapeUtils.unescapeHtml(session['SPRING_SECURITY_LAST_USERNAME'])

Вам не нужно использовать инструмент. Используйте HTML-кодек Grails:

username = session['SPRING_SECURITY_LAST_USERNAME']?.decodeHTML()
Другие вопросы по тегам