2010-06-28 53 views
4

我正在開發一個Web應用程序。我希望能夠讓一些朋友看到它,但不會有其他人偶然發現網址。我打算把一個登陸頁面,然後一個簡單的密碼框。一旦輸入了正確的密碼,我只需將它記錄在會話中,並像往常一樣公開瀏覽網站,以保證瀏覽器保持打開狀態。僅限特定用戶的JSP/Servlet訪問

有沒有一個標準的方法來做到這一點?我會添加額外的代碼到我的web應用程序來支持這一點,我不確定是否有內置的方法來做到這一點(我使用的是java servlets)。

感謝

回答

5

您可以使用container managed authentication using deployment descriptors。這不需要額外的代碼,只需輸入一個簡單的登錄表單並輸入URL j_security_check即可。這裏有一個簡單的例子:假設您有一個名爲/private文件夾中所私人頁面和上面的登錄頁面位於/private/login.jsp

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

,然後添加以下條目web應用程序的web.xml

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Private</web-resource-name> 
     <url-pattern>/private/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>friends</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>Private</realm-name> 
    <form-login-config> 
     <form-login-page>/private/login.jsp</form-login-page> 
     <form-error-page>/private/error.jsp</form-error-page> 
    </form-login-config> 
</login-config> 

然後,在您使用的servletcontainer中,您需要爲Private配置所謂的領域。由於您不清楚您使用的是哪個servletcontainer,因此這裏是一個Tomcat 8.0的目標文檔:Realm Configuration HOW-TO。您可以對其進行配置,以針對XML文件或數據庫甚至自定義位置驗證用戶名/密碼組合。


一個完全不同的替代方案是一個homegrow登錄機制與Filter,其檢查在所述會話範圍登錄用戶的存在的幫助。請參閱thisthis回答如何實現此目的。

相關問題