一尘不染

仅将JSP / Servlet访问限制为特定用户

jsp

我正在开发一个Web应用程序。我希望能够让一些朋友看到它,但不能让其他偶然发现该URL的朋友看到​​它。我打算放一个登录页面,然后放一个简单的密码框。输入正确的密码后,我将其记录在会话中,并在其余时间保持浏览器打开的状态下照常公开该网站。

有标准的方法吗?我会在我的web应用程序中添加额外的代码来支持此操作,但是我不确定是否已经有内置的方法(我正在使用Java servlet)。

谢谢


阅读 354

收藏
2020-06-08

共1个答案

一尘不染

您可以使用部署描述符使用容器管理的身份验证。这不需要您期望使用简单的登录表单(带有输入和密码字段并提交到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>

然后,在你使用该servletcontainer需要配置所谓的 境界
Private。由于不清楚您使用的是哪个servlet容器,因此以下是针对Tomcat 8.0的文档:Realm Configuration
HOW-TO
。您可以对其进行配置,以针对XML文件或数据库甚至是自定义位置来验证用户名/密码组合。


完全不同的替代方法是在的帮助下,增加登录机制,以Filter检查会话范围内已登录用户的存在。

2020-06-08