2012-06-12 94 views
3

用戶登錄後,我檢查他們的角色。如果他們沒有角色,我想將它們註銷。這就是我現在所做的:以編程方式註銷用戶

if (SpringSecurityUtils.ifAllGranted('ROLE_ADMIN')) { 
    redirect(uri: '/book/edit') 
} 
else if (SpringSecurityUtils.ifAllGranted('ROLE_USER')) { 
    redirect(uri: '/book/list') 
} 
else { 
    redirect(uri: '/login/auth') 
} 

這不起作用,因爲有一個遞歸重定向到/login/auth。我如何正確執行此操作(註銷並重定向到/login/auth)?

+0

爲什麼不把這個用戶,W/O型的角色,作爲一個殘疾人? –

回答

7
class AnyController {  
    def logoutHandlers 

    def method = { 
    ... 
     logoutHandlers.each { handler -> 
      handler.logout(request, response, springSecurityService.authentication) 
     } 
    } 
} 
+0

我會以'request'和'response'的身份傳入什麼內容?是否有某種類型的http函數會給我這些? – zoran119

+0

沒有。它們是每個控制器都可訪問的標準HttpRequest和HttpResponse對象 – jenk

9

順便說一句,註銷當前登錄的用戶,你可以讓下面的調用:

SecurityContextHolder.clearContext() 
+0

在集成測試中非常有用 –

相關問題