2016-05-04 2 views
1

Ich habe mich gefragt, wo (in Android/iOS) das Cookie von einem XMLHttpRequest erhalten ...Wie vermeiden Sie, dass XMLHttpRequest-Anmeldeinformationen (NTLM) in phonegap/cordova zwischengespeichert werden?

gespeichert wird Die Situation:

ich eine XHR-Anforderung zu authentifizieren auszuführen. Aus irgendeinem Grund startet dies eine Art von Sitzung und alle anderen Anforderungen, die ich ausführe, benötigen keine Anmeldeinformationen mehr. Diese Situation ist erwünscht, aber es gibt einen Abschnitt in der Anwendung, in dem andere Anmeldeinformationen benötigt werden. Wenn ich eine weitere XHR-Anfrage durchführe, spielt es keine Rolle, welche Zugangsdaten ich verwende, die ersten Zugangsdaten werden weiterhin verwendet.

Was ich benutze:

  • jQueryMobile
  • Angular

Was bemerkte ich [ANDROID]:

  • Die Anmeldeinformationen oder die Sitzung wird getötet auf App Neustart! (NICHT IM HINTERGRUND - WIE, wenn die Rücktaste gedrückt wird - ES MUSS VOLLSTÄNDIG GESCHLOSSEN SEIN). Also muss ich mich wieder einloggen.

Was ich versucht, ohne Erfolg:

  • eine param auf die URL hinzufügen, wenn ich neue Anmeldeinformationen verwendet werden soll.

    var xhr = new XMLHttpRequest; 
    xhr.open('GET', 'test.html?_=' + new Date().getTime()); 
    xhr.send(); 
    
  • Die InAppBrowser Funktionalität:

window.open ("index.html", "_self" "location = nein, clearsessioncache = yes");

Was ich will:

  • Ich habe keine Ahnung, wo mehr, dass die Sitzung finden ... Ich möchte wirklich wissen, wo es ist gelagert. Ich brauche eine Möglichkeit, es zu löschen/zu löschen, damit ich einen anderen erfolgreichen Aufruf mit anderen XMLHttpCredentials ausführen kann.
  • Denken Sie daran, ich möchte immer noch die Cache-Funktionalität verwenden, die XMLHttpRequest automatisch bereitstellt.

Jede Hilfe von Experten wäre willkommen.

+0

Haben Sie versucht, 'document.cookie' zu ​​inspizieren, um zu sehen, ob ein Authentifizierungs-Cookie nach dem ersten Zugriff gespeichert wird? Wenn ja, willst du es dort löschen. Cordova-Apps verwenden das von der Plattform bereitgestellte Browser-Kit (WebView, WkWebview oder UIWebView) und speichern Cookies für die von Ihnen erstellten Sitzungen. – yelsayed

+0

console.log (Dokument.Keks); protokolliert "". – Josh

Antwort

0

Soweit ich weiß, ist die einzige Möglichkeit, diese Anmeldeinformationen auf Android zu löschen, durch einen Neustart der App. Es ist möglich, dies programmatisch zu tun, wenn Sie es wirklich brauchen.

Unter iOS können Sie gespeicherte Anmeldeinformationen in sharedCredentialStorage verwalten. Um zum Beispiel alle Anmeldeinformationen zu entfernen:

NSDictionary* credentialsDict = [[NSURLCredentialStorage sharedCredentialStorage] allCredentials]; 

for (NSURLProtectionSpace* protectionSpace in credentialsDict){ 
    NSDictionary* userNameDict = credentialsDict[protectionSpace]; 
    for (NSString* userName in userNameDict){ 
     NSURLCredential* credential = userNameDict[userName]; 
     [[NSURLCredentialStorage sharedCredentialStorage] removeCredential:credential forProtectionSpace:protectionSpace]; 
    } 
}  

Um die nativen APIs zugreifen zu können, müssen Sie eine eigene Plugin zu bauen.

+0

Haben Sie Alternativen für Android? In welche Richtung muss ich suchen, um dasselbe Ergebnis zu erzielen? – Josh

Verwandte Themen