2

Ich habe eine mobile MVC 5-Website, die ich versuche, eine eigenständige mobile Web-App im Vollbildmodus auf einem iPhone zu machen. Alles funktioniert gut, bis die App einen externen Link startet, der zum Beispiel in Safari gestartet wird. Nach dem Zurückkehren zur Web-App scheinen die Sitzungsdaten zu verschwinden und eine neue Sitzungs-ID wird zugewiesen, wobei alle vorhandenen Spuren des vorherigen Benutzerfortschritts vor dem externen Start gelöscht werden. Der Benutzername bleibt jedoch intakt und "eingeloggt". Was muss ich tun, um die Sitzungsdaten beizubehalten?Wie kann ich Sitzungsdaten nach einem externen Start in einer eigenständigen Webanwendung beibehalten?

Ich bin seit Stunden hier, googeln und verschiedene Ansätze versuchen, aber ohne Erfolg und mein Kopf dreht sich. Ein ähnlicher Beitrag ist HERE, aber mein Problem ist die Session-Daten.

Jede Hilfe/Richtung würde sehr geschätzt werden.

AKTUALISIEREN 1 Es scheint, dass dieses Verhalten auf iOS beschränkt ist - testet derzeit auf 9.3.3. Gleiches Verhalten, ob der Link "Zurück zu [App] oben links in der Statusleiste verwendet wird oder doppeltippen auf die Home-Taste, um zu WebApp zurückzukehren. Android-Betriebssysteme scheinen gut zu funktionieren. Go figur. Wir verwenden Cookies.

Antwort

1

So war es ein "Hagel-Mary-Pass", aber es funktionierte ... besteht nur das ASP.NET_SessionId Cookie in Javascript es funktioniert an anderer Stelle hat, aber hier ist das, was ich tat.

in _Layout.vbhtml I dies $ (document) .ready hinzugefügt:

 if (window.navigator.standalone || window.matchMedia('(display-mode: standalone)').matches) { 
      document.cookie = "[email protected](Session.SessionID); " + extendTimeStr(5);    
     } 

zusammen mit der Funktion:

 function extendTimeStr(extMins) { 
      var d = new Date(); 
      d.setTime(d.getTime() + (extMins*60*1000)); 
      return "expires="+ d.toUTCString(); 
     } 

Magisch, es hat funktioniert! Hoffe es hilft jemandem.

0

Update für AspNetCore 2.0:

$(document).ready(function() { 
      if (('standalone' in window.navigator) && window.navigator['standalone']) { 
       var cookie = '@(Context.Request.Cookies[".AspNetCore.Identity.Application"])'; 
       document.cookie = ".AspNetCore.Identity.Application=" + cookie + "; " + extendTimeStr(5); 
      } 
     }) 

Danke @HumbleBeginnings für Ihre hervorragende und einfache Lösung für ein Problem zu an anderer Stelle kann ich nicht Antworten finden!

+0

Glücklich zu helfen, @Tim. :-) Danke für das AspNetCore 2.0 Update. – HumbleBeginnings

Verwandte Themen