gpt4 book ai didi

jsp - 基本身份验证 : Is it possible to setRemoteUser like getRemoteUser()

转载 作者:行者123 更新时间:2023-12-04 14:38:33 26 4
gpt4 key购买 nike

您好,我正在使用基本身份验证方法来保护我的 Web 应用程序中的某些页面。具有如下指定的 url 模式:

<url-pattern>/Important/*</url-pattern>
<auth-method>BASIC</auth-method>

现在的问题是,如果用户使用登录表单以正常方式登录。数据被发布到我的 servlet,它验证用户名和密码,然后进一步处理。有没有一种方法可以让我在此 servlet 中设置远程用户,因为一旦用户尝试访问重要文件夹中的页面,身份验证输入就会再次出现。有没有一种方法可以通知身份验证机制用户已经登录?

最佳答案

这是不可能的。如果您实际上有一个 HTML <form>对于登录,那么您应该将身份验证方法从 BASIC 更改为至 FORM .

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>

您还需要确保您的 HTML <form>提交到预定义的 URL j_security_check将用户名和密码作为预定义参数 j_usernamej_password .

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

这样容器将按照您需要的方式设置登录,用户名将在 getRemoteUser() 可用。 .此外,任何直接访问受限 URL 的未经身份验证的用户都将自动转发到登录页面。成功登录后,它将自动转发回最初请求的页面。

此外,当使用 FORM 时Servlet 3.0 兼容容器(Tomcat 7、Glassfish 3 等)上的身份验证方法,您将能够通过引入的 Servlet 3.0 以编程方式登录用户 HttpServletRequest#login() servlet 中的方法。这允许对过程和验证进行更细粒度的控制。这对于 BASIC 是不可能的身份验证。

BASIC身份验证是完全不同的事情。它显示了一个带有用户名/密码输入的裸 JavaScript 类似对话框。这不需要/使用 HTML <form>或者其他的东西。它还在客户端存储身份验证信息,这些信息在每个后续请求中作为请求 header 发送。它不会像 FORM 那样在服务器端 session 中存储身份验证信息。身份验证。

另见:

关于jsp - 基本身份验证 : Is it possible to setRemoteUser like getRemoteUser(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11225564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com