Disons que j'ai 4 routes - 2 exiger que l'utilisateur soit connecté, 2 ne le faites pas. Mon application Initie ressemble à:
$routeProvider.when('/open1',{templateUrl:'/open1.html',controller:'Open1'}); $routeProvider.when('/open2',{templateUrl:'/open2.html',controller:'Open2'}); $routeProvider.when('/secure1',{templateUrl:'/secure1.html',controller:'Secure1'}); $routeProvider.when('/secure2',{templateUrl:'/secure2.html',controller:'Secure2'});
3 Réponses :
J'ai eu le même problème et je l'ai fait de cette façon: puis écouter pour un emplacementChange dans l'application (ceci déclenchera également un activateur d'une page) p> < Pré> xxx pré> J'espère que cela vous aidera! p> p>
Ce n'est pas un mauvais plan, mais je dois ajouter une logique par route dans le gestionnaire d'événements et comment puis-je arrêter un itinéraire particulier de courir?
J'ai ajouté "lancer" arrêter l'exécution "; ' qui va arrêter toute activité JavaScript. Et a fait une redirection vers un loginpage. Dans la fonction, je vérifie si $ emplacement.path == "/ Signin";
Je suppose que cela fonctionnerait. N'y a-t-il rien à l'intérieur du RouteProvider code> qui peut aider?
Non, il n'y a rien dans l'authentification $ pour authentification, vous pouvez toujours jeter un coup d'oeil à un module externe comme Github .com / witoldsz / angulaire-http-auth
J'ai fini par suivre MidgetontoS.com/blog/2014/08/ 31 / Angularjs-Check-User-Connectez-vous à l'aide de la résolution. C'était le plus simple.
J'ai utilisé ce code pour exécuter Google Analytics pour chaque point de vue de la page, car il fonctionne chaque fois que l'itinéraire a changé et que je pourrais transmettre certaines données clés. Je n'avais pas besoin du $ Cookiestore cependant.
Ce blog post offres Avec l'authentification de l'utilisateur en angularjs à l'aide de directives.
Le service $ itinéraire émet $ Pitechangestart avant un changement d'itinéraire. P>
Si vous n'utilisez pas de directives, vous pouvez attraper cet événement en appelant app.Run (vous peut le placer après le code où vous définissez les itinéraires [app.config]). Par exemple: p>
Pour la divulgation complète, j'utilise ui.Router et c'est un code adapté de $ statechangeStart i Utilisez dans mon application p>
Donc, je peux utiliser $ roulettes de roulettes code> pour capturer et prévenir la suite? J'aurais toujours besoin de connaître les chemins et préférerais le faire dans le
RouteProvider.Quand () code> si je peux, mais cela fonctionnerait. Ceci est similaire à la réponse @jasonvanderzeeuw ci-dessous. Je vais lire le blog post, merci
@ leitch je recommanderais angularui routeur car il utilise des états au lieu des URL. Par exemple, l'état pourrait être Secure.Report i> ou Secure.list i> tandis que l'URL serait / Signaler i> ou / list i >, alors vous feriez seulement vérifier si l'état contient Secure i> dans le nom, sans connaître les liens exacts
Le blog est intéressant. Plutôt que de le faire sur la route, il suggère de définir une directive sur le modèle. Je ne pense pas que j'aime cette approche, je pense que je le préfère au niveau de la route (ou de l'État), mais l'idée pourrait fonctionner. Je vais essayer.
Comme dans mes commentaires ci-dessus, il existe 3 chemins différents (plus la possibilité d'utiliser une directive si vous souhaitez le contrôler à partir de modèles HTML). J'ai fini par suivre
https://midgetons.com/angularjs-check-user-login / p>
est essentiellement comme suit: p> puis uniquementloggedin code>: p>
var onlyLoggedIn = function ($location,$q,Auth) {
var deferred = $q.defer();
if (Auth.isLogin()) {
deferred.resolve();
} else {
deferred.reject();
$location.url('/login');
}
return deferred.promise;
};
Pouvez-vous s'il vous plaît mentionner où mettre Var OnlyLoggedin, comme dans quelle lunette? Je suis très nouveau à cela. @dechitch
@Aayushkumarsingha Je viens de le déclarer comme une fonction de variable locale dans mon app.js puis de le référencer dans mon $ routeProvider code>. Mais cela peut être n'importe où que vous souhaitiez, car vous pouvez toujours
exiger () code> ou l'inclure sinon.
Votre URL est morte
L'URL n'est plus morte, je l'ai récupéré :)
C'est encore mort, alors prenons une machine de cheminée: web.archive.org/web/20160512034000/https://midgetontoes.com/ ...