2010-03-02 67 views
2

任何人都可以告訴我,我該如何處理在基於表單的Java驗證中使用servlet的jjsecurity_checkjava中基於表單的身份驗證的混亂

我必須servlet類與j_security_check在像網絡XML文件名映射:

<servlet> 
<servlet-name>Anyname</servlet-name> 
<servlet-class>Anyclass</servlet-name> 
</servlet> 

<servlet-mapping> 
<servlet-name>Anyname</servlet-name> 
<url-pattern>/j_security_check</url-pattern> 
</servlet-mapping> 

如果我輸入用戶名和pasword,並點擊提交,然後將如何使用Servlet j_security_check名稱將處理這些信息?如何驗證那些輸入的用戶名和密碼,並獲取資源,如果驗證,然後授權成功,否則錯誤頁。如何將j_security_check servlet做到這一點?

+0

這通常已由您正在運行的servletcontainer管理。要得到更詳細的答案如何配置/使用它,你需要知道你正在使用哪一個。 – BalusC 2010-03-02 12:29:04

回答

1

您不需要將j_security_check映射到任何東西。這由應用程序服務器管理。
但是你需要添加用戶名。角色和領域信息。
每個應用程序服務器都有自己的驗證此信息的方式。

請參閱本 -
1)http://www.student.nada.kth.se/~d95-cro/j2eetutorial14/doc/Security5.html#wp303355
2)http://docs.sun.com/app/docs/doc/819-3669/bncby?a=view

+0

如果不需要映射,那麼在HTML表單的action域中定義「j_security_check」有什麼需要? – Stardust 2010-03-02 11:10:58

+1

@Stardust - 不需要映射,因爲servlet容器正在提供它。您需要在表單中使用j_security_check以符合現有映射。 – 2010-03-02 11:21:40

5

的想法是,你寫呈現以下字段和行動形式的JSP或Servlet的:

<form action="j_security_check" method="post"> 
    <input type="text" name="j_username"/> 
    <input type="password" name="j_password"/> 
    <input type="submit"/> 
</form> 

當表單提交後,servlet容器會使用您定義的機制(例如JAAS)爲您檢查憑據。在你的web.xml,你設置以下:

<login-config> 
    <form-login-check> 
     <form-login-page>/login.jsp</form-login-page> 
     <form-error-page>/error.jsp</form-error-page> 
    </form-login-check> 
</login-config> 

這使容器定位JSP或Servlet的包含您的形式,或您的錯誤處理代碼。如果你還沒有,我建議讀一讀Servlet Specification

相關問題