2012-02-03 42 views
0

我想知道如何使用Spring Security來實現無緩存功能。也就是說,當用戶註銷應用程序時,他/她總是可以使用瀏覽器後退按鈕訪問前一頁。使用Spring Security實現無緩存

我想防止這種行爲,並向用戶顯示頁面過期的消息,並要求他重新登錄。

我如何使用Spring安全性來實現這一點。

回答

1

如果用戶在瀏覽器中點擊後退按鈕,它可能會返回到本地瀏覽器緩存中的頁面,而不會對網站執行新的請求。

您將能夠執行所需功能的唯一方法是,如果您在每個頁面上發送ajax請求,則必須查看用戶會話是否仍然有效。然而,當用戶在他或她的瀏覽器中關閉javascript時,該方法失效。

+0

是的,我明白了這個功能。但是,考慮到用戶在瀏覽器中轉動javascript的情況,這會失敗。 有沒有其他的方法來阻止用戶這樣做。 – Vivek 2012-02-03 10:11:07

+0

除了始終在頁面加載時使用javascript/ajax動態加載內容以外,我不認爲有這樣的解決方案。 – 2012-02-03 10:16:19

0

我不認爲頁面緩存是應用程序安全的責任。
如果您的應用程序需要防止在使用後退按鈕時顯示緩存頁面,則您的應用程序必須在其響應中發送no-cache標頭,如下所示。
如果使用了這些,那麼當使用後退按鈕時,瀏覽器將再次請求頁面,並使用spring security login config和access denied config。

HTTP標頭:

response.addHeader("Pragma", "no-cache"); 
    response.addHeader("Cache-Control", "no-cache"); 

    response.addHeader("Cache-Control", "no-store"); 
    response.addHeader("Cache-Control", "must-revalidate"); 
    // expires on some date in the past 
    response.addHeader("Expires", "Mon, 8 Aug 2006 10:00:00 GMT"); 
+0

是的,我在我的過濾器中添加了上述標題,但仍然可以導航到上一頁。 :( – Vivek 2012-02-06 09:33:27

+0

)您是否清除瀏覽器緩存?也許這些是來自同一個URL的緩存頁面,然後再設置這些頭文件? – 2012-02-23 17:04:51

+0

如果您在添加這些頭後添加spring-security到URL中,回到服務器,然後加以保護,標題不阻止用戶回到上一頁,它只是防止從瀏覽器緩存中顯示頁面。 – 2012-02-23 17:06:25

相關問題