Je suis nouveau sur AngularJS et j'ai parcouru leur tutoriel et j'ai eu une idée de celui-ci.
J'ai un backend pour mon projet prêt où chacun des REST
points de terminaison doit être authentifié.
Ce que je veux faire
a.) Je veux avoir une seule page pour mon projet http://myproject.com
.
b.) Une fois qu'un utilisateur accède à l'URL dans le navigateur, en fonction du fait que l'utilisateur est connecté ou non, il est présenté avec une page d'accueil / vue ou page de connexion / vue sous la même URL http://myproject.com
.
c.) si un utilisateur n'est pas connecté, il remplit le formulaire et le serveur définit une USER_TOKEN
session en cours, de sorte que toutes les demandes ultérieures aux points finaux seront authentifiées en fonction deUSER_TOKEN
Mes confusions
a.) Comment puis-je gérer l'authentification côté client à l'aide d'AngularJS? J'ai vu ici et ici mais je n'ai pas compris comment les utiliser
b.) Comment puis-je présenter différentes vues à l'utilisateur en fonction de si l'utilisateur est connecté ou non sous la même URLhttp://myproject.com
J'utilise angular.js pour la toute première fois et je ne sais vraiment pas comment commencer. Tous les conseils et / ou ressources sont très appréciés.
Réponses:
J'ai créé un dépôt github résumant cet article en gros: https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec
Repo Github ng-login
Plunker
Je vais essayer d'expliquer le mieux possible, j'espère aider certains d'entre vous là-bas:
(1) app.js: Création de constantes d'authentification sur la définition d'application
(2) Service Auth: Toutes les fonctions suivantes sont implémentées dans le service auth.js. Le service $ http est utilisé pour communiquer avec le serveur pour les procédures d'authentification. Contient également des fonctions sur l'autorisation, c'est-à-dire si l'utilisateur est autorisé à effectuer une certaine action.
(3) Session: Un singleton pour conserver les données utilisateur. La mise en œuvre ici dépend de vous.
(4) Contrôleur parent: considérez cela comme la fonction "principale" de votre application, tous les contrôleurs héritent de ce contrôleur, et c'est l'épine dorsale de l'authentification de cette application.
(5) Contrôle d'accès: pour refuser l'accès sur certaines routes, 2 étapes doivent être mises en œuvre:
a) Ajoutez les données des rôles autorisés à accéder à chaque route, sur le service $ stateProvider du routeur de l'interface utilisateur, comme on peut le voir ci-dessous (cela peut fonctionner pour ngRoute).
b) Sur $ rootScope. $ on ('$ stateChangeStart') ajoutez la fonction pour empêcher le changement d'état si l'utilisateur n'est pas autorisé.
(6) Intercepteur d'authentification: Ceci est implémenté, mais ne peut pas être vérifié sur la portée de ce code. Après chaque requête $ http, cet intercepteur vérifie le code d'état, si l'un des éléments ci-dessous est renvoyé, il diffuse un événement pour forcer l'utilisateur à se reconnecter.
PS Un bogue avec le remplissage automatique des données du formulaire comme indiqué dans le premier article peut être facilement évité en ajoutant la directive qui est incluse dans directives.js.
PS2 Ce code peut être facilement modifié par l'utilisateur, pour permettre de voir différents itinéraires ou d'afficher du contenu qui n'était pas destiné à être affiché. La logique DOIT être implémentée côté serveur, c'est juste un moyen d'afficher correctement les choses sur votre ng-app.
la source
authService.login() = [...]
ces crochets représenteront quelque chose comme$http.get(url, {uID, pwd}
? ~~ ok, regardé dans le plunker, c'était comme je l'ai dit XDJ'aime l'approche et je l'ai implémentée côté serveur sans rien faire lié à l'authentification sur le front-end
Cherchez le commentaire de "Andrew Joslin".
https://groups.google.com/forum/?fromgroups=#!searchin/angular/authentication/angular/POXLTi_JUgg/VwStpoWCPUQJ
la source
J'ai répondu à une question similaire ici: Authentification AngularJS + API RESTful
J'ai écrit un module AngularJS pour UserApp qui prend en charge les routes protégées / publiques, le reroutage lors de la connexion / déconnexion, les pulsations pour les vérifications d'état, stocke le jeton de session dans un cookie, des événements, etc.
Vous pouvez soit:
https://github.com/userapp-io/userapp-angular
Si vous utilisez UserApp, vous n'aurez pas à écrire de code côté serveur pour les éléments de l'utilisateur (plus que la validation d'un jeton). Suivez le cours sur Codecademy pour l'essayer.
Voici quelques exemples de son fonctionnement:
Comment spécifier les routes qui doivent être publiques et quelle route est le formulaire de connexion:
L'
.otherwise()
itinéraire doit être défini vers l'endroit où vous souhaitez que vos utilisateurs soient redirigés après la connexion. Exemple:$routeProvider.otherwise({redirectTo: '/home'});
Formulaire de connexion avec gestion des erreurs:
Formulaire d'inscription avec gestion des erreurs:
Lien de déconnexion:
<a href="#" ua-logout>Log Out</a>
(Termine la session et redirige vers la route de connexion)
Accéder aux propriétés utilisateur:
Les propriétés de l'utilisateur sont accessibles à l'aide du
user
service, par exemple:user.current.email
Ou dans le modèle:
<span>{{ user.email }}</span>
Masquer les éléments qui ne devraient être visibles que lorsque vous êtes connecté:
<div ng-show="user.authorized">Welcome {{ user.first_name }}!</div>
Afficher un élément basé sur les autorisations:
<div ua-has-permission="admin">You are an admin</div>
Et pour vous authentifier auprès de vos services back-end, utilisez simplement
user.token()
pour obtenir le jeton de session et l'envoyer avec la requête AJAX. Au back-end, utilisez l' API UserApp (si vous utilisez UserApp) pour vérifier si le jeton est valide ou non.Si vous avez besoin d'aide, faites-le moi savoir!
la source
Dans angularjs, vous pouvez créer la partie UI, le service, les directives et toute la partie angularjs qui représente l'interface utilisateur. C'est une belle technologie sur laquelle travailler.
Comme toute personne qui découvre cette technologie et souhaite authentifier l '«utilisateur», je suggère de le faire avec la puissance de l'api web c #. pour cela, vous pouvez utiliser la spécification OAuth qui vous aidera à construire un mécanisme de sécurité solide pour authentifier l'utilisateur. une fois que vous avez créé WebApi avec OAuth, vous devez appeler cette API pour le jeton:
et une fois que vous obtenez le jeton, vous demandez les ressources à angularjs à l'aide de Token et accédez à la ressource qui a été sécurisée dans l'API Web avec la spécification OAuth.
Veuillez consulter l'article ci-dessous pour plus d'aide: -
http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/
la source
Et que se passe-t-il si l'utilisateur attrape de JSON et change le booléen en True?
Je pense que vous ne devriez jamais compter sur le client pour faire ce genre de choses. Si l'utilisateur n'est pas authentifié, le serveur doit simplement rediriger vers une page de connexion / erreur.
la source
la source