2012-11-16 42 views
4

在我的grails項目中,我使用了spring security core插件。我已經提供了註銷鏈接爲用戶仍然可以在grails註銷後查看前面的頁面

<g:link controller="logout">Logout</g:link> in my gsp pages. 

守則LogoutController爲:

class LogoutController { 

/** 
* Index action. Redirects to the Spring security logout uri. 
*/ 
def index = { 
    // TODO put any pre-logout code here 
     session.invalidate() 
     redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl // '/j_spring_security_logout' 
} 
} 

當用戶點擊它,它重定向用戶到登錄頁面。但是如果用戶點擊瀏覽器的後退按鈕,用戶可以看到前一個工作頁面。我不想將他重定向到前一頁&他應該留在登錄頁面上。我能爲它做些什麼?

附加信息:我創建了一個標籤庫,用於檢查登錄用戶的用戶名。如果它是匿名的,它會重定向到登錄頁面或將其發送到主頁。但是,它的工作,用戶必須點擊一些東西。因爲目前在註銷後,用戶可以通過點擊後退按鈕來看到前一頁。我不想在前一頁重定向他。他應該留在登錄頁面上。

+1

session.invalidate()是沒有必要的。後退按鈕重新加載頁面或緩存在瀏覽器中?頁面是否正確映射以進行身份​​驗證?你也可以檢查記住我的cookie。 –

+0

它在瀏覽器中顯示緩存頁面。那裏記得我的Cookie設置? –

+0

如果它被緩存,那麼是沒問題的。記住我通常是登錄表單中的複選框。或者可以使用spring security core參數配置參見http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/22%20Miscellaneous%20Properties.html –

回答

7

簡單,只是把這個代碼在您所有的網頁:

<% 
response.setHeader("Cache-Control","no-cache"); 

response.setHeader("Cache-Control","no-store");  

response.setDateHeader("Expires", 0); 

response.setHeader("Pragma","no-cache"); 

%> 
+2

我們在grails中使用佈局,我們通常對登錄頁面使用不同的佈局。所以我們需要把上面的代碼放在佈局頁面上。 – Ramsharan

+0

或者我們可以使用過濾器來添加上面的代碼。 – Ramsharan

+0

你是非常正確的Ramsharan,把上面的ina模板或過濾器是高效的 –

相關問題