gpt4 book ai didi

grails - Grails Spring Security在身份验证失败时看不到闪存消息

转载 作者:行者123 更新时间:2023-12-02 14:30:27 25 4
gpt4 key购买 nike

我正在尝试实现应该非常简单的东西。但是,我似乎无法正常工作。

我已经实现了自定义表单登录,并且尝试在身份验证失败时显示错误消息。

验证失败后。我被带到grails.plugin.springsecurity.LoginController.authfail()方法。它加载异常消息并将其设置为flash消息。

if (springSecurityService.isAjax(request)) {
render([error: msg] as JSON)
}
else {
flash.message = msg
redirect action: 'auth', params: params
}

之后,我将使用以下URL重定向回登录页面:
http://localhost:9090/lm/login/auth?login_error=1

在我的 auth.gsp文件中。我添加了以下代码以显示即显消息。
<g:message code="${flash.message}" args="${flash.args}" default="${flash.default}"/>

但是,重定向后登录页面上未显示任何内容。这可能是什么问题?

这是我尝试身份验证时来自Spring Security的DEBUG日志。
http://pastebin.com/z7sU4ipQ

最佳答案

<g:message code="${flash.message}" args="${flash.args}" default="${flash.default}"/>

上面一行将 flash.message应该是消息代码,如果未找到任何代码,则应使用 flash.default作为默认值,该默认值也不可用。

考虑到您的登录由于凭据错误而失败,因此您的 flash.message消息将显示类似 No account found with this username and password的消息。当您将此 flash.message渲染到GSP中的 g:message code时,当然没有定义消息代码,因此它将查找 flash.default。但是 flash.default没有任何值(value),因此您什么也看不到。

因此,只需将该行替换为 ${flash.message}或像这样更改即可:
<g:message code="${flash.message}" args="${flash.args}" default="${flash.message}"/>

关于grails - Grails Spring Security在身份验证失败时看不到闪存消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com