我正在开发一个网络应用程序。我希望能够让一些朋友看到它,而不是让其他偶然发现该网址的朋友看到它。我打算放一个登陆页面,然后放一个简单的密码框。输入正确的密码后,我只需将其记录在会话中,并在他们保持浏览器打开的其余时间里照常公开网站。
有没有标准的方法来做到这一点?我会在我的 webapp 中添加额外的代码来支持这一点,我不确定是否已经有内置的方法来做到这一点(我正在使用 java servlet)。
谢谢
我正在开发一个网络应用程序。我希望能够让一些朋友看到它,而不是让其他偶然发现该网址的朋友看到它。我打算放一个登陆页面,然后放一个简单的密码框。输入正确的密码后,我只需将其记录在会话中,并在他们保持浏览器打开的其余时间里照常公开网站。
有没有标准的方法来做到这一点?我会在我的 webapp 中添加额外的代码来支持这一点,我不确定是否已经有内置的方法来做到这一点(我正在使用 java servlet)。
谢谢
您可以使用部署描述符来使用容器管理的身份验证。这不需要额外的代码,只需一个简单的登录表单,其中包含提交到 URL 的输入和密码字段j_security_check
。这是一个基本示例:
<form action="j_security_check" method="post">
<input type="text" name="j_username">
<input type="password" name="j_password">
<input type="submit">
</form>
假设您在名为的文件夹中有私有页面,/private
并且上述登录页面位于 中/private/login.jsp
,则将以下条目添加到 webapp 的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>
然后,在您使用的 servlet 容器中,您需要为Private
. 由于不清楚您使用的是哪个 servletcontainer,这里有一个针对 Tomcat 8.0 的文档:Realm Configuration HOW-TO。您可以将其配置为针对 XML 文件或数据库甚至自定义位置验证用户名/密码组合。
一个完全不同的替代方案是借助 aFilter
检查登录用户在会话范围内的存在来自行开发登录机制。请参阅this和this answer如何实现这一点。
您应该考虑使用 htaccess 进行简单身份验证
请参阅http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/