2014-02-27 44 views
0

我有一個使用JBoss AS7上運行的JSF1.2開發的Web應用程序。除登錄頁面外,所有其他頁面均受保護。我還有一個自定義的FormAuthenticator閥,需要作爲認證過程的一部分進行觸發。如何使用j_security_check登錄後自動將用戶重定向到受保護的頁面

登錄頁面使用j_security_check

我的核心要求是:

  1. 當前登錄頁面時,試圖訪問受保護的頁面(並採取成功登錄後,用戶最初請求的頁面)的用戶。
  2. 如果用戶直接訪問登錄頁面,成功登錄後將用戶帶到歡迎頁面。

當我嘗試訪問http://server.com/my-app/faces/protected1.jsp時,要求#1正常工作。

但是,當試圖通過上下文根(即http://server.com/my-app/)訪問Web應用程序時,我得到了404。

我試圖在web.xml中使用歡迎文件屬性和我的web.xml如下所示:

<welcome-file-list> 
    <welcome-file>/faces/protected1.jsp</welcome-file> 
</welcome-file-list> 

... 
<!-- login config --> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/login.jsp</form-login-page> 
     <form-error-page>/login-error.jsp</form-error-page> 
    </form-login-config> 
</login-config> 

<!-- security constraints --> 
<security-constraint> 
    <display-name>protected1</display-name> 
    <web-resource-collection> 
     <web-resource-name>protected1</web-resource-name> 
     <url-pattern>/faces/protected1.jsp</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>PUT</http-method> 
     <http-method>HEAD</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <description>protected1Group</description> 
     <role-name>WebUserRole</role-name> 
    </auth-constraint> 
</security-constraint> 
<security-role> 
    <role-name>WebUserRole</role-name> 
</security-role> 

我有2個問題:

  1. 我是在正確的跟蹤試圖獲得歡迎文件作爲登錄後的默認登錄頁面(當用戶直接訪問我的應用程序的上下文根或login.jsp時)?
  2. 如果我將歡迎文件更改爲未受保護的jsp(例如,沒有安全限制的hello.jsp),爲什麼同樣的工作完美無缺?

任何想法非常感謝!謝謝。

回答

0

保護您的歡迎文件對我沒有任何意義。通常這是網站的主頁,任何人都應該能夠看到。然後,如果他們點擊某個受保護資源(如「我的資料」)的某個鏈接,則會將其保存到/faces/mystuff.something,這將受到保護,因此在他們到達那裏之前會有一個登錄信息。

+0

本例中的主頁是登錄頁面。所以,如果我有(1)主頁作爲歡迎文件,(2)用戶直接進入主頁(即登錄頁面),那麼我得到一個「HTTP狀態400 - 無效的直接引用到表單登錄頁面」錯誤因爲登錄後沒有重定向到哪裏。 – Thira

相關問題