Laden...

Webview2 Login Informationen speichern

6 Antworten
416 Aufrufe
Letzter Beitrag: vor 20 Tagen
Webview2 Login Informationen speichern

Hallo,

ich habe ein Problem mit einem Webview, welches eine Seite aufruft bei der man sich mit Username und Password anmelden muss. Ich möchte diese informationen speichen, do das ich bei dem nächsten Start meines Programms Username und Password nicht wieder eingeben muss.

Dafür habe ich folgendes Webview so implementiert:

 webViewCharts.CoreWebView2InitializationCompleted += WebViewCharts_CoreWebView2InitializationCompleted;
        private void WebViewCharts_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
       {
           webViewCharts.CoreWebView2.Settings.IsGeneralAutofillEnabled = true;
           webViewCharts.CoreWebView2.Settings.IsPasswordAutosaveEnabled = true;
       }

Wenn ich jetzt das erste mal das Program starte und Username und Password eingegeben habe kommt dieses kleine bekannte Fenster welches auch im normalen Browser kommt und fragt ob man Username und Password speichern möchte...also klicke ich auf speichern.

Wenn ich mich jetzt in meinem Programm von der Webseite Abmelde bzw. Auslogge und dann wieder einloggen will, dann wird mir das von mir vorher eingegebene Username und Password angezeigt und ich muss nur auf Login klicken.

Wenn ich mich aber Auslogge und dann mein Program beende und wieder neu starte, dann werden die Anmeldeinformationen nicht automatisch eingetragen.

Was mach ich denn da falsch ?

Danke schon mal
Matthias

Hallo,

bin ich hier im richtigen Forum mit meiner Frage ?

Matthias

Servus Matthias,

Ich kenne mich damit nicht bestens aus, versuche es aber mal 😃

Ich vermute, dass webViewCharts.CoreWebView2.Settings.IsGeneralAutofillEnabled = true; deine Logindaten nur während der Laufzeit speichert. Bedeutet wenn du die Anwendung schließt, werden alle Variablen wieder auf Standard gesetzt.

Ich würde folgendes machen:

Wenn du den Haken setzt bei Login merken →

XML Datei erstellen, wenn nicht vorhanden →

Darin speicherst du Login + Passwort →

Serialisieren.

Bei FormLoad() Event dann diese Datei:

Prüfe ob vorhanden →

Deserialisieren →

Werte auslesen und eintragen.

Man könnte noch ergänzen wenn der haken nicht gesetzt ist:

Datei löschen wenn vorhanden.

Ich hoffe du verstehst das. Wenn du Hilfe mit dem Code brauchst mach Meldung. 😃

EDIT:

Ich hatte mal gesehen, dass man solche Sachen in der Projektmappe auch ablegen kann ohne extra eine Datei zu erstellen. Diese konntest du dann ganz einfach aufrufen mit bspw.:

XDocument xmlLogin = Properties.Resources.Logindatei;

Eventuell bringt dir das was

Hallo,
danke für die Antwort.

Grundsätzlich verstehe ich was du meinst, ausgenommen wie ich abfange wenn das password gespeichert wird ?

Allerdings sollte das doch in der funktionalität des Webview irgendwie gehen oder ?

Matthias

Servus,

mit dem Webview hatte ich noch keinen Kontakt, daher kann ich dir das nicht sagen.

Auf die schnelle hab ich das hier gefunden:

https://github.com/AdysTech/CredentialManager

https://learn.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection

Eventuell hilft dir das weiter.

Meine Lösung würde ich beginnen beim laden der Form, prüfen ob Datei vorhanden, wenn ja, auslesen und in Textboxen ausgeben. Checkbox auf true setzen.

Beim klick auf Login, wenn checkbox.checked=true, String aus Textboxen in diese xml speichern. Wenn Checkbox false, Datei löschen.

        private void Window_Loaded()
        {
            if (File.Exists(PfadZurLoginXML){ LadeLogindatenAusXML(); }
        }
        
                private void Loginbutton_click()
        {
            if (CheckBox.checked= true){ SpeicherLoginXML(); }
            if (!CheckBox.checked= true){ LöscheLoginXML(); }
            // Weiterer Login-Code
        }

Der Teil

webViewCharts.CoreWebView2.Settings.IsGeneralAutofillEnabled = true;
webViewCharts.CoreWebView2.Settings.IsPasswordAutosaveEnabled = true;

bringt nur die Edge Engine dazu, dass dessen eingebauter Password-Manager getriggert wird.

Alle anderen Engines/Password-Manager triggern hier nicht bzw greifen auch die globalen + User Edge Settings hier.


if (File.Exists(PfadZurLoginXML){ LadeLogindatenAusXML(); }

Das ist eines der schlimmsten Dinge, die man mit Credentials tun kann. Den Windows Credential Manager gibt es nicht umsonst.