Spring Security 3 - Ajax 注销

Posted

技术标签:

【中文标题】Spring Security 3 - Ajax 注销【英文标题】:Spring Security 3 - Ajax logout 【发布时间】:2016-07-12 06:44:08 【问题描述】:

我正在构建一个具有集成登录/注销功能的单页 Web 应用程序。后端由 Grails 3 和 Spring Security 3.0.3 提供支持。

来自 Spring Securiy 文档:

LoginController 具有 JSON 生成方法 ajaxSuccess()ajaxDenied()authfail(),这些方法生成 JSON,登录 javascript 代码可以使用这些方法适当地显示成功或错误消息。

默认情况下,Ajax 请求由 X-Requested-With 请求标头标识。

Ajax 注销功能呢?据我所知,没有内置支持可以做到这一点,所以我正在寻找有关实现这一目标的最简单方法的建议。

目前,使用默认的 Spring Security 配置,注销按预期工作(即用户能够成功注销),但我从后端得到的当然是登录页面的 html

提前致谢!

【问题讨论】:

【参考方案1】:

我自己也遇到了同样的问题。

没有找到跳过重定向的方法,但是通过添加我自己的注销控制器,我至少可以提供一个 json 响应而不是登录页面。

将此添加到 application.groovy

grails.plugin.springsecurity.logout.afterLogoutUrl="/ajaxLogout"

这是我的控制器

@Secured('permitAll')
class AjaxLogoutController 
  def index() 
    def data = [:]
    data.success = true
    render data as JSON
  

【讨论】:

【参考方案2】:

There's a whole section on Ajax in the docs.

【讨论】:

以上是关于Spring Security 3 - Ajax 注销的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security Ajax 登录

Spring Security Ajax 登录

spring security ajax登录

Grails Spring Security 插件:Getting 302 for Ajax Request for timeout Session

AJAX / Spring MVC - 没有 Spring Security 的 403 禁止错误

使用spring webMVC和spring security的ajax登录