0

我在基于 com.sun.net.httpserver.HttpServer 的 Java 程序中实现了一个小型 HTTP 服务器,它也使用基本身份验证。这一切都很好,但是,我想处理任何失败的身份验证请求。

默认情况下,当用户身份验证失败时(当她点击浏览器登录弹出窗口上的取消按钮时),会向客户端发送一个空白页面;未调用 HttpHandler 的 handle() 方法。

有什么想法可以在我的程序中捕获这些失败的身份验证尝试吗?

谢谢!

4

2 回答 2

1

看了一下文档...我认为您可以通过从您的身份验证器返回 Authenticator.Retry Result 并在其中指定一个新标题“位置:http://mysite/loginpage ”或您想要的任何内容来做到这一点重定向到(请记住,您需要指定绝对 URL,以 http:// 开头,而不是相对 url /loginpage)

编辑:如果您使用的是 BasicAuthenticator 的子类,您还需要覆盖 authenticate 方法,您需要查看原始源代码(请参阅http://xantorohara.blogspot.com/2008/07/sources-of -comsunnethttpserverhttpserve.html)查看原始身份验证方法的作用...或者您可以在您的 authenticate() 方法中进行试验以查看 super.authenticate() 返回的内容,如果是失败,则改为发送带有位置的重试: 标题

于 2012-04-23T22:37:23.493 回答
0

我不知道是否在 Authenticator 之前调用了过滤器(您可以通过将 som 调试信息打印到过滤器中的控制台并查看它是否在 Authenticator “踢你”之前写入控制台。如果是这样,您可能会这样做这是通过创建在身份验证之前运行的过滤器并将用户重定向到错误页面

于 2012-04-23T22:25:40.223 回答