Comment atteindre un Coffre-fort (!) système d'authentification dans une application angularjs?
Je suis nouveau avec angularjs...
J'ai lu les docs, et terminé le tutoriel, mais j'ai aussi essayé autre chose par moi-même, et les choses commencent à faire sens pour moi.
Maintenant je me demande comment faire un sécurité système d'authentification.
La partie la plus facile: pas de code, je vais décrire les opérations de mon code à exécuter:
J'ai une forme classique: le nom d'utilisateur et le mot de passe de saisie de texte.
L'utilisateur remplit le formulaire et appuyez sur ENTRÉE.
Une requête ajax commence, et la réponse est un JSON me disant
quelque chose comme "ok, je sais que vous" ou "je ne sais pas qui vous êtes".
Ce que j'ai besoin maintenant, c'est à mantain connecté statut du visiteur (ou non connecté) entre les différents points de vue de ma demande.
J'ai lu sur internet que, pour atteindre cet objectif, quelqu'un met une variable ($champ d'application.isLogged = true), quelqu'un d'autre utilise des cookies; mais variables javascript et les cookies peuvent être facilement modifiés à l'aide de firebug, ou similaire, des outils de développement.
... et, enfin, à la question:
Donc, avez-vous des suggestion pour atteindre un coffre-fort système d'authentification dans une application angularjs?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas autoriser quoi que ce soit dans angularjs, parce que l'utilisateur a le plein contrôle de l'environnement d'exécution (à savoir, le navigateur). Chaque case, cas, si tout ce que vous pouvez penser - peut être altéré. Il y a des bibliothèques javascript qui utilisent des clés asymétriques pour effectuer le chiffrement local pour stocker les données locales à peu près en sécurité, mais ils ne sont pas ce que vous cherchez, vraiment.
Vous le pouvez, et vous devez autoriser des choses sur le serveur - le standard de la façon dont vous le feriez dans une application ordinaire - à l'aide de session; aucun code spécial n'est nécessaire, les appels ajax utilisation ordinaire des cookies de session. L'Application n'a pas besoin de savoir si c'est authentifié ou non. Il a seulement besoin de vérifier que le serveur pense.
Du point de vue de votre application angularjs, d'être "connecté" ou "déconnecté" est simplement une interface graphique de l'indice pour l'utilisateur.
Probablement vous avez trouvé une solution, mais pour l'instant j'ai fait un authenticaiton que je suis en œuvre dans mon Angulaire de l'App.
Sur .exécuter l'application est enregistrée avec une ActiveSession définie sur false.
Il vérifie ensuite si le navigateur a un cookie avec un jeton et un identifiant.
Si OUI, vérifiez jeton+nom d'utilisateur sur le serveur et les mises à jour le jeton sur le serveur et en local (jeton c'est un générées par le serveur de clé unique pour chaque utilisateur)
Si PAS de montre formulaire de connexion, vérifiez les informations d'identification et encore si ils sont valables un serveur de demande t obtenir un nouveau jeton et enregistre localement.
Le jeton est utilisé pour faire une connexion persistante (souvenez-vous de moi pendant 3 semaines) ou lorsque l'utilisateur actualise la page du navigateur.
Merci
J'ai posé cette question il y a trois mois.
Je voudrais partager ce qui est devenu mon préféré approche lorsque j'ai à traiter avec authentification de l'utilisateur dans une application web construit sur AngularJS.
Bien sûr fdreger la réponse est encore une grande réponse!
Brièvement ma démarche consiste à:
1) Lier à chaque itinéraire des informations supplémentaires sur la route elle-même.
2) Utiliser un service de mantain les données relatives à chaque utilisateur, et leur statut d'authentification.
3) Chaque fois que l'utilisateur essaie d'accéder à une nouvelle route, vérifier s'ils ont l'octroi de l'accès.
J'ai également écrit au sujet de cette approche (plus en détail) sur mon blog, les utilisateurs de l'authentification avec angularjs.
Tout d'abord: des données côté Client peut toujours être manipulées ou modifiées.
Tant que valide Id de session ne sont pas facilement deviner et ce type de mesures associant les jetons de session avec l'IP du client n'est pas une grosse affaire à ce sujet.
Vous pouvez, en théorie, aussi chiffrer le cookie, aussi longtemps que vous le faites sur le côté serveur.
Pour plus de détails sur la façon de crypter vos cookies, consultez la documentation de votre côté serveur (e.g http://expressjs.com/api.html#res.cookie pour Express.js)
Vous avez besoin d'apprendre sur le côté serveur /base de données de la fin de celui-ci.
Les connexions de l'utilisateur doivent être stockés quelque part - à 99,9% du temps, c'est dans un de côté de serveur de base de données.
Idéalement pour un système sécurisé, vous voulez un back-end (serveur) le système d'adhésion, qui stocke la session dans une table de base de données qui est liée à la table membre qui détient le mot de passe crypté, mais fournit également une interface RESTful où vous pouvez construire vos appels d'api.
Un Script que j'ai utilisé avec succès beaucoup de choses ont été Amember https://www.amember.com/. C'est vraiment un moyen efficace d'aller bien qu'il existe beaucoup d'autres script, j'ai eu beaucoup de succès avec celui-ci.. C'est aussi le PHP ainsi, vous pouvez construire votre construire une API pour votre angulaire http appels très facilement.
Tous ces frameworks javascript sont grands, mais l'effet est que maintenant, trop nombreux sont trop mettre l'accent sur le front-end de choses à apprendre la base de données /backend ainsi! 🙂