Grails Spring Security插件-用户名转义问题

问题描述

|| 我目前正在使用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()
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...