2012-12-19 34 views
0

我有一個奇怪的案例,我不知道如何解決。如何從JavaScript調用容器管理的安全檢查?

使用案例: 我一直在使用老式Servlet和JSP建立一個遺留應用程序,它需要調用一個使用JSF 2 JSF 2內置採用使用基於表單的身份驗證容器管理安全的另一個 應用。

在遺留應用程序中,它有一個讓用戶自動驗證進入JSF 2應用程序的頁面。

<HTML> 
    <HEAD> 
     <script> 
      function doLogin() { 
      document.loginform.action="http://localhost:6060/MyApp/faces/j_security_check"; 
      document.loginform.submit(); 
      } 
     </script> 
    </HEAD> 
    <BODY> 
     <FORM id="loginform" name="loginform" method="POST"> 
      <input type="text" id="j_username" name="j_username"> 
      <input type="password" id="j_password" name="j_password"> 
      <input type="button" onClick="doLogin()"> 
     </FORM> 
    </BODY> 
</HTML> 

我的問題是,我如何以編程方式調用身份驗證機制? 遺留系統和JSF 2應用程序都具有不同的身份驗證機制,因此我需要進行兩次身份驗證。

我嘗試了上面的代碼,它與成功的登錄工作。但是,如果用戶記錄了無效的用戶標識和密碼,它將重置回登錄頁面,而不會轉發到jsf2應用程序的無效用戶標識/密碼頁面。 有人做過這件事嗎?

+0

這個JS代碼沒有意義。您可以直接在'

'屬性中直接輸入該URL,並在沒有onclick的情況下用'替換該按鈕。至於具體問題,我並不完全明白。登錄頁面是否託管在不同的Web應用程序上,而不是您希望登錄的Web應用程序?你有沒有在你想登錄的webapp上配置''和'? – BalusC

+0

正確BalusC..it是一個不同的Web應用程序託管在不同的服務器..它只是某種鏈接兩個Web應用程序與不同的服務器。 –

回答

0

你必須在你的web.xml中,如下配置的錯誤頁面:

<form-error-page>/fail_login.html</form-error-page> 

你可以把一個重定向你<form-error-page>,將帶你到相應的網頁。