如果使用Spring Security Plugin从Grails应用程序注销,则获得HTTP状态405

Vas*_*huk 6 grails spring-security logout

我正在为我的Grails应用程序(2.4.4)添加Spring Security插件(2.0 RC3).但是,一旦点击"退出"链接,我会看到该网页HTTP Status 405.

如何解决这个问题?

Vas*_*huk 17

可以通过分析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 
    }
}
Run Code Online (Sandbox Code Playgroud)

所以有两个可用的修复程序:

1)更改"注销"链接以发送POST请求.

<form name="logout" method="POST" action="${createLink(controller:'logout') }"> 
<input type="submit" value="logout"></form> 
Run Code Online (Sandbox Code Playgroud)

2)或者只需在Config.groovy中添加以下行

grails.plugin.springsecurity.logout.postOnly = false
Run Code Online (Sandbox Code Playgroud)