L'authentification d'utilisateurs sur une Seule Page App?
J'ai développé une page unique application prototype qui utilise l'épine Dorsale sur l'extrémité avant et à aller consommer à partir d'un mince API RESTful sur le serveur de données.
Venir du lourd côté serveur de développement d'applications (php et python), j'ai vraiment apprécié la nouvelle approche de la conception avec une épaisse MVC côté client, mais je suis confus sur la façon de limiter l'application à des utilisateurs authentifiés qui se connectent.
Je préfère avoir l'application elle-même derrière un login et tiens également à mettre en œuvre d'autres types de connexions finalement (openid, fb connect, etc) en plus du site du natif de connexion. Je ne sais pas comment cela est fait et ont été à la recherche - mais pas réussi à trouver l'information qui l'a fait clair pour moi.
Dans la grande image, qu'est-ce que les meilleures pratiques en vigueur pour l'enregistrement des utilisateurs et d'exiger d'eux de connexion à utiliser votre single page app?
Une fois qu'un utilisateur est connecté, comment sont les requêtes à l'api authentifié? Puis-je stocker une session, mais comment puis-je détecter pour cette session dans les appels d'API ou est-il un jeton je dois passer tous les appels de l'API? Les réponses à ce serait bien apprécié!
- Qu'avez-vous fait finalement? Veuillez choisir une réponse si l'un de ces réponses résolu ou ajouter votre propre solution?
Vous devez vous connecter pour publier un commentaire.
Le plus Reposant comme je l'ai vu est basé sur le client OAuth informations d'identification de flux, essentiellement une /jeton d'extrémité que vous publiez nom d'utilisateur/mot de passe à qui retourne un jeton d'accès pour cette session. Chaque requête ajax après cela ajoute un
Authorization
porteur en-tête avec le jeton. Vous pouvez stocker le jeton dans une variable globale à juste le garder jusqu'à ce que la page est actualisée/fermé, local de stockage pour garder les utilisateurs connectés entre les sessions, ou javascript, les cookies. Si vous n'aimez pas l'idée de jetons, alors vous pouvez simplement utiliser l'ancien cookie approche qui est automatiquement envoyer toute requête ajax de toute façon.Comme pour facebook/google etc j'ai l'habitude de suivre les stackoverflow approche où je associer externe userlogins à un compte. Utilisez ensuite un assez normal en fonction de serveur oauth danse (bien que vous pouvez remplacer toutes les requêtes vers le serveur avec des requêtes ajax avec de légères modifications, je trouve qu'il n'a pas vraiment beaucoup de différence que vous avez besoin redirige entre vous et le serveur de toute façon). J'ai normalement un cookie crypté pour un facebook login, que j'ai ensuite convertir en un jeton à l'aide d'une méthode similaire à celle ci-dessus (juste envoyer le cookie avec la demande à la place du nom d'utilisateur/mot de passe).
Nous utilisons django cookie d'authentification et d'avoir une page séparée pour le login et le single page app. Fonctionne plutôt bien pour notre cas d'utilisation. Nous avons utilisé une colonne vertébrale à base système de gestion des sessions que j'ai décrit ici: backbone.js - si un utilisateur est connecté ou pas
Nous utilisons Angular.js et aussi, avoir une page séparée pour la connexion. La page séparée des charges distinct seule page (et sécurisé) de l'application qui appelle le serveur à l'aide de http XHR demande, l'envoi de nom d'utilisateur et mot de passe. Si le serveur authentifié les informations d'identification, le code javascript définit un cookie. ce cookie peut être lu à partir de "l'autre côté", du sens, de la non-application sécurisée. Dans le cookie nous ne mettre le nom d'utilisateur et, bien sûr, pas de mot de passe ou d'autres informations sécurisées. ensuite, nous pouvons montrer comme quelque chose de " Pas Lior? Déconnexion " sur la non-secure app.
Seule chose à noter est pour remplacer Angulaire du mécanisme des cookies pour définir une durée indéterminée expiration et, plus important encore, chemin de la racine: