2012-06-02 51 views
1

美好的一天。我使用Tomcat 7.0通過FORMS身份驗證實現了JAAS授權。當我嘗試訪問localhost:8080/Guestbook/secure/123.html時,我被重定向到授權頁面。我進行身份驗證並將其重定向到localhost:8080/Guestbook/secure/css/style.css,獲取HTTP狀態404 - /Guestbook/secure/css/style.css。如果我嘗試再次訪問localhost:8080/Guestbook/secure/123.html資源,我可以在不被重定向到認證頁面的情況下獲取它。據我所知,我得到授權,但我沒有從第一次嘗試重定向到資源。確實會發生什麼,並且可以採取什麼措施來防止這種行爲?在我的web.xml中,我有以下幾段代碼。JAAS認證和Servlet響應

<security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Security test</web-resource-name> 
      <url-pattern>/secure/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>Admin</role-name> 
     </auth-constraint> 
    </security-constraint> 

    <servlet-mapping> 
     <servlet-name>FrontControllerServlet</servlet-name> 
     <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

    <login-config> 
     <auth-method>FORM</auth-method> 
     <form-login-config> 
      <form-login-page>/login.jsp</form-login-page> 
      <form-error-page>/error.html</form-error-page> 
     </form-login-config> 
    </login-config> 
+0

任何幫助將不勝感激:) – OneMoreVladimir

回答

1

我想當你訪問localhost:8080/Guestbook/secure/123.html瀏覽器正在從緩存中提供html。而且html正在使用localhost:8080/Guestbook/secure/css/style.css,對此請求發送給服務器。而你那種行爲。

我不明白保護靜態頁面的必要性。但是,如果您確實想要確保向瀏覽器發送緩存標頭,則瀏覽器不會緩存該html並始終向服務器發出請求。

要禁用瀏覽器緩存靜態頁面發送以下標題:

Pragma: no-cache 
Cache-Control: no-cache,no-store 
+0

Ramesh PVK,謝謝你的回答。一個靜態頁面用於測試,其代碼由頁面指令,文檔類型,頭沒有鏈接到CSS和空體。 – OneMoreVladimir

+0

你能否使用livehttpheaders和post will獲得瀏覽器發出的請求。我們會知道誰是本地主機的請求:8080/Guestbook/secure/css/style.css –

0

最後,我已經想通了這個問題,我應該用$ {} pageContext.request.contextPath表達我的href屬性鏈接標籤。