使用 Spring Security 插件从 Grails 应用程序注销时获得 HTTP 状态 405

Posted

技术标签:

【中文标题】使用 Spring Security 插件从 Grails 应用程序注销时获得 HTTP 状态 405【英文标题】:Got HTTP Status 405 in case of logout from Grails application with Spring Security Plugin 【发布时间】:2015-04-07 15:28:18 【问题描述】:

我正在向我的 Grails 应用程序 (2.4.4) 添加 Spring Security 插件 (2.0 RC3)。但是,一旦单击“注销”链接,我就会看到带有 HTTP Status 405 的网页。

如何解决这个问题?

【问题讨论】:

【参考方案1】:

通过LogoutController代码分析可以找到原因

class LogoutController 

    def index() 

        if (!request.post && SpringSecurityUtils.getSecurityConfig().logout.postOnly) 
            response.sendError HttpServletResponse.SC_METHOD_NOT_ALLOWED // 405
            return
        

        // TODO put any pre-logout code here
        redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 
    

所以有两个可用的修复:

1) 更改“注销”链接以发送 POST 请求。

<form name="logout" method="POST" action="$createLink(controller:'logout') "> 
<input type="submit" value="logout"></form> 

2) 或者只是将以下行添加到 Config.groovy

grails.plugin.springsecurity.logout.postOnly = false

【讨论】:

以上是关于使用 Spring Security 插件从 Grails 应用程序注销时获得 HTTP 状态 405的主要内容,如果未能解决你的问题,请参考以下文章

Grails Spring Security 插件密码问题

Grails spring-security-core 插件教程

使用用户名作为电子邮件,Spring Security UI 插件

使用 Grails Spring Security Rest 插件时如何获取客户端登录失败的原因?

Grails Spring Security 核心插件

使用 Spring Security Grails 插件编码密码