2

J'ai un site Web mobile MVC 5 que j'essaie de faire une application Web mobile autonome fonctionnant en plein écran sur un iPhone. Tout fonctionne bien jusqu'à ce que l'application lance un lien externe qui sera, par exemple, lancé dans Safari. En retournant à l'application web, les données de session semblent disparaître et un nouvel identifiant de session est assigné, effaçant toute trace existante de la progression de l'utilisateur précédent avant le lancement externe. Le nom d'utilisateur, cependant, reste intact et "connecté". Que dois-je faire pour conserver les données de session?Comment puis-je conserver les données de session dans une application Web autonome après un lancement externe?

Cela fait maintenant des heures que je fais ça, je google et j'essaie différentes approches, mais en vain et ma tête tourne. Un message similaire est HERE mais mon problème concerne les données de session.

Toute aide/direction serait grandement appréciée.

MISE À JOUR 1 Il semble que ce comportement soit limité à iOS - en cours de test sur 9.3.3. Même comportement si le lien «Retour à [App] en haut à gauche de la barre d'état est utilisé ou appuyez deux fois sur le bouton principal pour revenir à la WebApp.» Les systèmes d'exploitation Android semblent fonctionner correctement: Nous utilisons des cookies.

Répondre

1

ce fut donc une « passe-Hail Mary », mais cela a fonctionné ... juste le cookie persistent ASP.NET_SessionId en javascript il peut avoir travaillé ailleurs, mais voici ce que je faisais.

dans _Layout.vbhtml I a ajouté à $ (document) .ready:

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

avec la fonction:

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

Magiquement, cela a fonctionné! J'espère que ça aide quelqu'un.

0

Mise à jour pour 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); 
      } 
     }) 

Merci @HumbleBeginnings pour votre excellente solution simple à un problème que je ne peux pas trouver des réponses à d'autres!

+0

Heureux de vous aider, @Tim. :-) Merci pour la mise à jour d'AspNetCore 2.0. – HumbleBeginnings