Плагин безопасности 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()