问题描述
||
我目前正在使用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,那么我还能使用什么呢?
对于任何帮助,在此先感谢!
解决方法
不建议使用字符串
\'SPRING_SECURITY_LAST_USERNAME\'
-具有该值的旧常量已经并且已经以新名称但具有相同值的方式进行了移动。因此,您的代码将继续有效。
与其更改事物以使其无法逃脱,不如轻松地逃避:
import org.apache.commons.lang.StringEscapeUtils
...
String username = StringEscapeUtils.unescapeHtml(session[\'SPRING_SECURITY_LAST_USERNAME\'])
,您不需要使用工具。使用Grails HTML编解码器:
username = session[\'SPRING_SECURITY_LAST_USERNAME\']?.decodeHTML()