gpt4 book ai didi

Grails Spring Security 插件 - 登录表单重定向到 ajaxAuth

转载 作者:行者123 更新时间:2023-12-01 03:38:23 25 4
gpt4 key购买 nike

我有一个使用 grails 的 Grails 应用程序 Spring 安全 2.0.RC-5 插入。
假设我打开了 2 个标签。
一号,一旦我退出了应用程序。然后,在第二个,我单击一个按钮,该按钮对应用程序进行 AJAX 调用。

因为我已注销,入口点将是 LoginController.authAjax .
该方法中插件生成的默认代码是

response.setHeader 'Location', SpringSecurityUtils.securityConfig.auth.ajaxLoginFormUrl
response.sendError HttpServletResponse.SC_UNAUTHORIZED

我在 ajax 调用中收到了 401,没关系。
问题来了,现在如果我返回登录页面并重新提交登录表单,我会被重定向到方法 LoginController.authAjax .

该方法中的代码是
render([success: true, username: springSecurityService.authentication.name] as JSON)

反过来,这不会将我重定向到应用程序中的仪表板页面,而是呈现 {"success":true,"username":"user1"}
显然,这不是预期的行为。我该如何解决?
谢谢你

最佳答案

这是 的默认行为Spring 安全核心 插件,当您注销并尝试访问 protected URL 时,它将该 URL 存储到 session 中,并在成功登录后重定向回相同的 URL,这样用户就不必手动转到原始请求的页面。

如果要永久禁用此行为,可以在 Config.groovy 中指定以下配置:

grails.plugin.springsecurity.successHandler.alwaysUseDefault = true

在这里查看 http://grails-plugins.github.io/grails-spring-security-core/guide/urlProperties.html

但是如果你想有条件地禁用它,你也可以通过清除我上面提到的 session 变量来做到这一点:

在您的 authAjax行动:
def authAjax() {
if (request.xhr) { // For any AJAX request or any condition you want
session["SPRING_SECURITY_SAVED_REQUEST"] = null
}
}

关于Grails Spring Security 插件 - 登录表单重定向到 ajaxAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32777614/

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