Comment gérer la session de l'utilisateur du serveur dans l'application à une seule page côté client
J'ai été tâtonner avec différentes technologies côté client, comme AngularJS, EmberJS, même en essayant d'utiliser directement JQuery et comprendre comment les utiliser ReactJS avec elle. Cela mis à part, mon objectif est de construire une page unique application en utilisant json entre le client et un Java Jersey 2 jax-rs extrémité arrière de l'api.
J'ai deux pierres d'achoppement droit maintenant. Quelques infos mais..je suis le déploiement de mon application comme un fichier WAR dans la Jetée. Le dos est basé sur java. Je suis en utilisant uniquement jquery dans le côté client de maintenant.
Ma principale pierre d'achoppement est comment gérer la connexion, la déconnexion et la gestion de session. Avec une API rest et à l'aide d'ajax, j'ai login de travail, y compris la définition d'un cookie. Ma préoccupation est cependant avec une seule page app, il y a juste une page d'index, et si l'utilisateur ferme le navigateur, puis le rouvre à la page d'index alors que le cookie de session est toujours bonne, l'utilisateur doit être connecté, pour ne pas voir l'extérieur (non connecté) de la page. Je ne sais pas comment gérer cela, que ce soit une page jsp index.html avec certains de template library, etc. Avec JSP je peux insérer des scriplet code (contre mon meilleur jugement). Dans le passé, j'avais inclure un en-tête, qui permettrait de contrôler fins de la demande.getSession().getAttribute("utilisateur") et si elle était là..l'utilisateur était connecté et à l'aide de scriplet si() code que j'avais d'affichage connecté à en-tête, au lieu de la non-enregistrés dans l'en-tête. Mais je suis dans la croyance, il y a obtenu d'être une meilleure façon de faire cela avec aujourd'hui côté client frameworks JS.
L'autre pierre d'achoppement est la navigation et des aspects dynamiques. Par exemple, lorsque j'ai été déconner avec angular js, il était assez facile d'utilisation Bienvenue {{nom}} et dans le champ d'application remplacez le nom par une réponse json de la valeur pour l'utilisateur connecté. Dans ma situation actuelle, je ne suis pas exactement sûr de la meilleure façon de passer de l'affichage dynamique bits comme ça avec pure jquery autres que d'utiliser une sorte de $("#elem-id").innerHtml="..." le code à l'intérieur de la méthode succès d'un appel ajax. Ainsi, je ne suis pas tout à fait sûr de savoir comment gérer la navigation sur les différentes pages. Mon enregistré dans le site de certains des menus déroulants ou des liens qui remplacera la zone de contenu avec différentes quantités variables de contenu.
Alors d'abord, quelles sont certaines des façons d'un SPA pour gérer les sessions de l'utilisateur, dans le cas d'un rechargement de la page, ou close/crash du navigateur redémarrer.. pour s'assurer que l'utilisateur est toujours connecté et en direct à la page de droite? Deuxièmement, ce genre de gabarits et de routage de navigation/il existe des options qui ne nécessitent pas de moi de mettre un énorme tonne de code dans mon index.page jsp?
Merci.
source d'informationauteur user3317868
Vous devez vous connecter pour publier un commentaire.
Si vous êtes d'avoir une API REST que le dos de la fin, alors vous devez avoir mis en œuvre le protocole oAuth comme un mécanisme d'authentification. Cela signifie que lorsque votre utilisateur se connecte, à l'aide d'un nom d'utilisateur et un mot de passe, vous échangez des données avec un jeton d'authentification. Ce jeton d'authentification est envoyé à votre serveur à chaque appel de l'API et de votre backend valide ce jeton avant de traiter la requête. Claire jusqu'à présent?
Ce que vous pourriez faire est, lorsque vous obtenir le jeton d'accès, vous pouvez également obtenir le jeton d'accès délai d'expiration du serveur et de stocker des données dans votre côté client app. Dans localStorage peut-être? Et lorsque l'utilisateur ferme le navigateur et le rouvre à nouveau, vous pouvez d'abord vérifier si un tel jeton d'accès est disponible (et non expiré) avant de demander à l'utilisateur de se connecter. Cela devrait résoudre votre problème.
Deuxièmement, si vous êtes à la recherche d'un léger option de routage, je recommande directeur.
Je fais construire une application similaire. OAuth est pas obligatoire. Vous pouvez avoir des sessions normales etc en appuyant sur le maillot de connexion d'extrémité et la définition d'une session et cookie "keepme" avec la session si l'utilisateur veut être constamment connecté. Vous pouvez ensuite avoir un maillot AuthFilter par exemple vérifier si il y a un cookie avec une session valide ou une session active et de garder la connexion de l'utilisateur.
Votre application frontend ne devrait avoir aucun mot à dire sur cela, il suffit de communiquer avec le serveur et si ce n'est pas d'obtenir un accès non autorisé (à partir de la AuthFilter) puis continue sinon il affiche la page de connexion.