我有一个Java Swing应用程序,它通过web start启动,并通过URL访问服务器上的数据文件。这些文件由Apache2提供,并带有HTTP basic Auth。Java会弹出一个对话框,提示您登录,这很好用。
当用户选中“将此密码保存在您的密码列表中”时,问题就来了。然后密码改变或者一开始就是错误的,你就会被卡住。显然它还不够聪明,不能再给你一次机会。如果您保存的登录失败,您将得到一个401错误,仅此而已。
那么,它将保存的密码存储在哪里,以及如何删除它们?
涉及的代码如下所示:
// uri is a String
URL url = new URL(uri);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
// check HTTP response code
int responseCode = urlConnection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK)
throw new IOException("\nHTTP response code: " + responseCode);
// read the file
BufferedReader reader = new BufferedReader
(new InputStreamReader (urlConnection.getInputStream ()));
... etc ...该代码运行良好,除非在这种情况下,用户保存了一个错误的密码,在这种情况下,您会得到401。
我的理解是java.net将其钩子放在java.net类中,这样您就可以获得密码提示符之类的东西,而从命令行或WebStart运行相同的代码是无法获得的。所以,这个问题实际上是关于这种行为的。
谢谢!
发布于 2011-12-15 07:04:08
没有代码?现在你得到了一个模糊的答案。根据您的HttpClient,它可能存储在cookies中或其他什么地方。重新初始化您的HttpClient将是很好的第一个调试步骤。如果这不起作用,在这里发布一些代码会非常有帮助。
发布于 2017-05-05 20:43:49
在windows中,密码保存在下面的文件中。
{user_name}\AppData\LocalLow\Sun\Java\Deployment\security\auth.dat
您可以删除此文件以清除保存的密码。
https://stackoverflow.com/questions/8512896
复制相似问题