【问题标题】:Grails Spring Security Plugin - Username escaping problemGrails Spring Security Plugin - 用户名转义问题
【发布时间】:2011-08-31 20:05:29
【问题描述】:

我目前正在使用 Grails 和 Spring Security 插件并尝试实现密码过期工作流程。我已经按预期配置了插件:

grails.plugins.springsecurity.failureHandler.exceptionMappings = [
    'org.springframework.security.authentication.CredentialsExpiredException': '/login/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 已弃用,我还能使用什么?

如有任何帮助,请提前致谢!

【问题讨论】:

    标签: grails grails-plugin


    【解决方案1】:

    字符串'SPRING_SECURITY_LAST_USERNAME' 未被弃用 - 具有该值的旧常量已被移动并使用新名称但值相同。因此您的代码将继续有效。

    你可以轻松地取消逃跑,而不是改变事情以不逃跑:

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

    【讨论】:

    • 我一直在寻找一个转义工具,但是......是的,Apache Commons......谢谢!
    • 在 2.0+ 版本的插件中仅供参考,该值现在没有转义,因此您必须在显示之前对其进行转义
    【解决方案2】:

    您不需要使用工具。使用 Grails HTML 编解码器:

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

    【讨论】:

    • 但是 Spring Security 选择存储这个转义是非常值得怀疑的。
    猜你喜欢
    • 2012-11-19
    • 2014-07-30
    • 2014-03-17
    • 2013-03-15
    • 2014-10-15
    • 2017-08-23
    • 2013-05-25
    • 2015-12-19
    • 1970-01-01
    相关资源
    最近更新 更多