2013-07-22 26 views
0

我有一个使用Spring Security(CAS)的Grails应用程序。但是,在我登出按钮后,我没有注销。我有LogoutController,用下面的代码:从使用Spring Security(CAS)的Grails应用程序注销时出错

class LogoutController { 
    def index = { 
     println "IN LOGOUT CONTROLLER TRYING TO LOGOUT" 
     redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl // '/j_spring_security_logout' 
    } 

    def accessDenied = { 

    } 
} 

而且在我Config.groovy文件,我有:

grails.plugins.springsecurity.logout.afterLogoutUrl = 'https://login.test.com/cas/logout' 

我GSP页面的代码是

<g:link controller='Logout'>Logout</g:link> 

然而,当我点击我重定向的注销按钮,但没有完全注销。关于我做错什么的想法?

+0

您可以发布后面的“注销”按钮的代码(大概GSP)? –

+0

已发布 – user2433194

+0

从'Config.groovy'中删除'afterLogoutUrl'后,我能够无任何麻烦地注销。你可以尝试吗? –

回答

3

您是否试过在控制器索引方法中直接调用session.invalidate()

class LogoutController { 
    def index = { 
     println "IN LOGOUT CONTROLLER TRYING TO LOGOUT" 
     session.invalidate() 
     redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 
    } 
} 

干杯

+0

需要这个。如果在我的gsp中没有'session.invalidate',会被视为仍然登录。 – Guus

0
<g:link controller='Logout'>Logout</g:link> 

def index = { 

    logoutProcessService.process(params) 
    redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUr 
} 
+1

请编辑你的答案并向你的代码添加一些解释。 – MillaresRoo

相关问题