Löschen Sie die Sitzung / den Cache / Cookie im JavaFX WebView

7

Ich hatte einen Swing-Dialog, der JavaFX WebView verwendet, um die oAuth 2.0-URL vom Google-Server anzuzeigen.

%Vor%

Jedes Mal erhalte ich die folgende URL von Google. Ich werde die SimpleSwingBrowser verwenden, um die folgende URL zu laden.

Ссылка

Während der ersten Zeit wird die folgende Benutzeroberfläche angezeigt.

Bildschirm eins

Bildschirm zwei

Nach mir

  1. Führen Sie die erfolgreiche Anmeldung auf dem Bildschirm eins durch.
  2. Präsentiert mit Screen Two.
  3. Klicken Sie auf Akzeptieren.
  4. Schließen Sie den Webbrowser-Dialog.
  5. Erneut die exakt gleiche URL wie beim ersten Mal generieren.
  6. Erstellen Sie eine vollständig neue Instanz von SimpleSwingBrowser , um die in Schritt
  7. generierte URL zu laden

Ich erwarte, dass Google mir Screen One erneut zeigt, da dies eine neue Browsersitzung ist. Was ich zum zweiten Mal bekomme, ist Screen Two.

Es scheint, dass in der WebView einige Session / Cache / Cookies gespeichert sind, obwohl es eine komplett neue Instanz ist.

Ich erwarte, dass ich wieder zu Screen One komme, damit ich mehrere Benutzerkonten unterstützen kann.

Wie kann ich die Sitzung / den Cache / Cookie in WebView löschen?

    
Cheok Yan Cheng 01.05.2014, 13:55
quelle

2 Antworten

17

Session-Cookies für JavaFX WebView werden in java.net.CookieHandler gespeichert.

Um Cookies selbst zu verwalten, erstellen Sie eine neue Instanz von java.net.CookieManager :

%Vor%

Setzen Sie es dann als Standard:

%Vor%

Um Cookies zu löschen, rufen Sie einfach die removeAll-Methode auf:

%Vor%

oder einfach eine neue Instanz des Cookie-Managers erstellen und als Standard festlegen:

%Vor%     
SimY4 05.05.2014, 11:06
quelle
7

Ich habe JavaFX 8 WebView verwendet, um OAuth 2.0 sowohl von Google als auch von Dropbox anzuzeigen. Es hat sich herausgestellt, dass eine neue Instanz von java.net.CookieManager() als Standard mit Google gearbeitet hat (und natürlich die Session-Cookies entfernt hat), aber ich konnte mich nicht mehr mit meinem Dropbox-Konto anmelden. Der "Sing in" Button hat einfach nicht funktioniert.

Ich debuggte und fand heraus, dass standardmäßig eine Instanz von com.sun.webkit.network.CookieManager verwendet wird. Also habe ich

benutzt %Vor%

was mein Problem gelöst hat. Aufgrund seiner javadoc ist es RFC 6265-konform, das ist die aktuelle Definition von HTTP-Cookies und Set-Cookie-Header-Felder.

Sie müssen das JDK (nicht nur die JRE) aufgrund einiger Zugriffsbeschränkungen in der JRE als Systembibliothek Ihres Projekts verwenden.

    
gfkri 28.07.2014 14:33
quelle

Tags und Links