J'ai une application AngularJS créée en utilisant yeoman, grunt et bower.
J'ai une page de connexion qui a un contrôleur qui vérifie l'authentification. Si les informations d'identification sont correctes, je redirige vers la page d'accueil.
app.js
'use strict';
//Define Routing for app
angular.module('myApp', []).config(['$routeProvider', '$locationProvider',
function($routeProvider,$locationProvider) {
$routeProvider
.when('/login', {
templateUrl: 'login.html',
controller: 'LoginController'
})
.when('/register', {
templateUrl: 'register.html',
controller: 'RegisterController'
})
.when('/forgotPassword', {
templateUrl: 'forgotpassword.html',
controller: 'forgotController'
})
.when('/home', {
templateUrl: 'views/home.html',
controller: 'homeController'
})
.otherwise({
redirectTo: '/login'
});
// $locationProvider.html5Mode(true); //Remove the '#' from URL.
}]);
angular.module('myApp').factory("page", function($rootScope){
var page={};
var user={};
page.setPage=function(title,bodyClass){
$rootScope.pageTitle = title;
$rootScope.bodylayout=bodyClass;
};
page.setUser=function(user){
$rootScope.user=user;
}
return page;
});
LoginControler.js
'use strict';
angular.module('myApp').controller('LoginController', function($scope, $location, $window,page) {
page.setPage("Login","login-layout");
$scope.user = {};
$scope.loginUser=function()
{
var username=$scope.user.name;
var password=$scope.user.password;
if(username=="admin" && password=="admin123")
{
page.setUser($scope.user);
$location.path( "/home" );
}
else
{
$scope.message="Error";
$scope.messagecolor="alert alert-danger";
}
}
});
Sur la page d'accueil, j'ai
<span class="user-info">
<small>Welcome,</small>
{{user.name}}
</span>
<span class="logout"><a href="" ng-click="logoutUser()">Logout</a></span>
Dans le loginController
, je vérifie les informations de connexion et si cela réussit, je définis l'objet utilisateur dans l'usine de service. Je ne sais pas si c'est exact ou non.
Ce dont j'ai besoin, c'est que lorsque l'utilisateur est connecté, il définit une valeur dans l'objet utilisateur afin que toutes les autres pages puissent obtenir cette valeur.
Chaque fois qu'un changement d'itinéraire se produit, le contrôleur doit vérifier si l'utilisateur est connecté ou non. Sinon, il devrait rediriger vers la page de connexion. De plus, si l'utilisateur est déjà connecté et revient à la page, il doit aller à la page d'accueil. Le contrôleur doit également vérifier les informations d'identification sur toutes les routes.
J'ai entendu parler des ng-cookies, mais je ne sais pas comment les utiliser.
La plupart des exemples que j'ai vus n'étaient pas très clairs et ils utilisent une sorte de rôles d'accès ou quelque chose. Je ne veux pas de ça. Je veux seulement un filtre de connexion. Quelqu'un peut-il me donner des idées?