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

В настоящее время я работаю с 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 ]

5 голосов
/ 24 мая 2011

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

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

import org.apache.commons.lang.StringEscapeUtils
...
String username = StringEscapeUtils.unescapeHtml(session['SPRING_SECURITY_LAST_USERNAME'])
1 голос
/ 25 июля 2012

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

username = session['SPRING_SECURITY_LAST_USERNAME']?.decodeHTML()
...