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 注销的主要内容,如果未能解决你的问题,请参考以下文章
Grails Spring Security 插件:Getting 302 for Ajax Request for timeout Session