Ho un'applicazione AngularJS creata usando yeoman, grugnito e pergolato.
Ho una pagina di accesso che ha un controller che verifica l'autenticazione. Se le credenziali sono corrette, reinstrado alla home page.
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";
}
}
});
Nella home page che ho
<span class="user-info">
<small>Welcome,</small>
{{user.name}}
</span>
<span class="logout"><a href="" ng-click="logoutUser()">Logout</a></span>
Nel loginController
, controllo le informazioni di accesso e se ha esito positivo, ho impostato l'oggetto utente nella factory di servizio. Non so se sia corretto o meno.
Ciò di cui ho bisogno è che, quando l'utente ha effettuato l'accesso, imposta un valore nell'oggetto utente in modo che tutte le altre pagine possano ottenere quel valore.
Ogni volta che si verificano cambiamenti del percorso, il controller dovrebbe verificare se l'utente ha effettuato l'accesso o meno. In caso contrario, dovrebbe reindirizzare alla pagina di accesso. Inoltre, se l'utente ha già effettuato l'accesso e torna alla pagina, dovrebbe andare alla home page. Il controllore dovrebbe anche controllare le credenziali su tutte le rotte.
Ho sentito parlare di ng-cookies, ma non so come usarli.
Molti degli esempi che ho visto non erano molto chiari e usano una sorta di ruoli di accesso o qualcosa del genere. Non lo voglio. Voglio solo un filtro di accesso. Qualcuno può darmi alcune idee?