2013-11-21 84 views
1

我使用apache shiro會話進行身份驗證和授權。如何清除apache shiro會話?

我可以用不同的用戶和權限和角色登錄,但實際的問題是我每次調用signOut函數看起來shiro會話都沒有被擦掉。

顯而易見的是,每當我點擊註銷它來主屏幕,如果我使用瀏覽器後退按鈕,我可以回到最後一個屏幕。

我signOut功能看起來像這樣

// Log the user out of the application. 
SecurityUtils.subject?.logout() 
webRequest.getCurrentRequest().session = null 
session.invalidate()  

// For now, redirect back to the home page. 
redirect(uri: "/") 

這個真的很感激任何幫助,從最近兩天

+0

您正在使用哪種版本的Grails的四郎插件? – j4y

+0

上午使用shiro 1.2.0 –

回答

1

這對我的作品與四郎插件的版本1.1.4版掙扎了這一點。

def logOut() { 
    SecurityUtils.subject?.logout() 

    redirect(uri: "/") 
} 
+1

我也使用相同的代碼註銷,但shiro的會話仍然active.If我使用瀏覽器的後退按鈕,我可以回到上一頁。如果我離開它約1小時shior的會話超時,一切正常 –

1

這是由於瀏覽器緩存。您可以配置重置您的瀏覽器緩存在ShiroSecurityFilters文件中。

class ShiroSecurityFilters { 
def filters = { 
    requestHeadersFilter(controller: '*', action: '*') { 
      after = { 
      response.setHeader("Pragma", "no-cache") 
      response.setDateHeader("Expires", 0) 
      response.setHeader("Cache-Control", "no-cache") 
      response.addHeader("Cache-Control", "no-store") 
     } 
    }