Comment stocker un jeton d'authentification dans Angulaire app

J'ai Angulaire de l'application (SPA) qui communique avec une API REST de serveur et je suis intéressé à trouver la meilleure méthode pour stocker un jeton d'accès qui est retourné à partir d'une API de serveur, de sorte que l'angle client peut l'utiliser pour s'authentifier les demandes futures de l'API. Pour des raisons de sécurité, je tiens à le stocker en tant que navigateur variable de session, de sorte que le jeton n'est pas conservée après la fermeture du navigateur.

Je me suis mise en œuvre d'une version légèrement personnalisée de l'authentification OAuth 2.0 à l'aide de la Ressource Mot de passe du Propriétaire de la subvention. L'angle de l'application fournit un formulaire pour l'utilisateur de saisir son nom d'utilisateur et mot de passe. Ces informations sont alors envoyées à l'API en échange d'un jeton d'accès qui doit ensuite être envoyé comme en-tête (Autorisation: Porteur %Jeton%) pour toutes les requêtes sortantes à l'API de sorte qu'il peut autoriser des demandes à d'autres voies.

Je suis assez nouveau dans le domaine Angulaire, mais le flux de travail que je voudrais mettre en œuvre pour la gestion de ces jetons est résumée comme suit.

1) Le client fait une requête à l'API en lui fournissant les informations d'identification utilisateur.

2) Si cette demande est acceptée, le jeton est stocké quelque part (où est la question)

3) Intercepter les requêtes HTTP. Si le jeton est ensemble, passer un en-tête de l'API

4) Jeton est détruit lorsque le navigateur/onglet est fermé.

Je sais Angulaire offre $de la fenêtre.sessionStorage, qui semble être ce que je recherche, mais je suis préoccupé par la possibilité pour elle de ne pas travailler sur tous les navigateurs selon les différentes ressources que j'ai lu. C'est une entreprise de qualité de l'application et doit être compatible dans un large éventail de navigateurs (IE, Chrome, Firefox). Je peux l'utiliser avec la confiance qu'elle sera stable?

Les alternatives, ce que je comprends, sont soit $de la fenêtre.localStorage ou les cookies ($cookies, $cookieStore). Ce ne serait pas une solution idéale pour moi car je ne veux pas de ces données pour persister, mais si c'est plus fiable, je vais avoir à sacrifier l'efficacité pour la compatibilité. Je pensais aussi qu'il pourrait être possible de définir simplement comme une valeur sur l' $rootScope de référence et de cette façon, mais je ne suis pas sûr si cela est possible.

J'espère que tout fait sens. Toute aide /suggestions seraient grandement appréciés.
Merci!

avez-vous trouvé une bonne façon de le faire? - Je avoir une situation similaire ici.

OriginalL'auteur The Zuidz | 2014-05-21