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

发布于 2024-09-08 02:02:20 字数 226 浏览 5 评论 0原文

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

有没有标准的方法来做到这一点?我会向我的 web 应用程序添加额外的代码来支持这一点,我不确定是否有内置的方法可以做到这一点(我正在使用 java servlet)。

谢谢

I'm developing a web app. I'd like to be able to let some friends see it, but not others that stumble upon the url. I was going to put a landing page and then a simple password box. Once the correct password is entered, I'd just record it in the session and expose the site as usual for the rest of the time they keep the browser open.

Is there a standard way to do this? I'd be adding extra code to my webapp to support this, I'm not sure if there's a built-in way to do it already (I'm using java servlets).

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄意 2024-09-15 02:02:20

您可以使用使用部署描述符的容器管理身份验证。这不需要您额外编写任何代码,只需要一个简单的登录表单,其中包含提交到 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 中,然后添加将以下条目添加到 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>

然后,在您使用的 servlet 容器中,您需要为 Private 配置所谓的领域 >。由于不清楚您正在使用哪个 servletcontainer,这里有一个针对 Tomcat 8.0 的文档: 领域配置方法。您可以将其配置为根据 XML 文件或数据库甚至自定义位置验证用户名/密码组合。


一个完全不同的替代方案是在过滤器的帮助下自行开发登录机制,该过滤器检查会话范围中是否存在登录用户。请参阅此 和这个回答了如何实现这一点。

You can use container managed authentication using deployment descriptors. This requires no extra code in your side expect of a simple login form with an input and password field which submits to the URL j_security_check. Here's a basic example:

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

Assuming that you've private pages in a folder named /private and the above login page is located in /private/login.jsp, then add the following entries to the webapp's 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>

Then, in the servletcontainer which you're using you need to configure a so-called Realm for Private. Since it's unclear which servletcontainer you're using, here's a Tomcat 8.0 targeted document: Realm Configuration HOW-TO. You can configure it to verify the username/password combo against a XML file or a database or even a custom location.


A completely different alternative is to homegrow a login mechanism with help of a Filter which checks the presence of the logged-in user in the session scope. See this and this answer how to achieve this.

上课铃就是安魂曲 2024-09-15 02:02:20

您应该考虑使用 htaccess 使用简单的身份验证

请参阅 http:// /www.elated.com/articles/password-protecting-your-pages-with-htaccess/

You should think about using simple authentication using htaccess

See http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文