我想爲應用程序添加「註銷」功能,並且這樣做需要忘記所有密碼。替換Authenticator似乎沒有效果,因爲getPasswordAuthentication不會再被調用。似乎有一個密碼緩存,但我找不到或清除它的方式。下面是測試情況:通過java.net.Authenticator設置清除密碼
import java.net.*;
import java.io.*;
class Main {
public static void main(String[] args) throws MalformedURLException, IOException {
Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("stack", "overflow".toCharArray());
}
});
URLConnection connection = new URL("http://devio.us/~ricky/stackoverflow-protected/nothingtosee.html").openConnection();
System.out.println(new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")).readLine());
Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("no", "way".toCharArray());
}
});
connection = new URL("http://devio.us/~ricky/stackoverflow-protected/nothingtosee.html").openConnection();
System.out.println(new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")).readLine());
//This second line ideally should not succeed. I.e., the results are <html>\n<html>, but only the first <html> should be seen.
}
}
該網站是一個我和控制的情況下,它消失以任何理由:堆棧/溢出是有效的,無/辦法是不使用的.htaccess。如果您知道更標準的參考站點,請隨時更改我的代碼或建議更換。
我需要一個身份驗證器,以便我可以提示新用戶輸入用戶名/密碼。無論如何,我不認爲這是有效的,因爲認證者的方法甚至不是第二次被調用。 – 2011-12-08 06:51:51
連接獲取流失敗後,您應該將認證碼重置爲空。並提示用戶下次再次輸入用戶名/密碼。我認爲這取決於你的程序邏輯控制。 – hejiaming007 2011-12-23 13:48:34