Ich habe eine AngularJS-Anwendung, die mit yeoman, grunt und bower erstellt wurde.
Ich habe eine Anmeldeseite mit einem Controller, der die Authentifizierung überprüft. Wenn die Anmeldeinformationen korrekt sind, leite ich zur Startseite um.
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";
}
}
});
Auf der Homepage habe ich
<span class="user-info">
<small>Welcome,</small>
{{user.name}}
</span>
<span class="logout"><a href="" ng-click="logoutUser()">Logout</a></span>
In der loginController
überprüfe ich die Anmeldeinformationen und wenn es erfolgreich ist, setze ich das Benutzerobjekt in der Service Factory. Ich weiß nicht, ob das richtig ist oder nicht.
Was ich brauche ist, wenn der Benutzer angemeldet ist, setzt es einen Wert im Benutzerobjekt, damit alle anderen Seiten diesen Wert erhalten können.
Bei Routenänderungen sollte der Controller prüfen, ob der Benutzer angemeldet ist oder nicht. Wenn nicht, sollte es zur Anmeldeseite umleiten. Wenn der Benutzer bereits angemeldet ist und zur Seite zurückkehrt, sollte er zur Startseite wechseln. Der Controller sollte auch die Anmeldeinformationen auf allen Routen überprüfen.
Ich habe von ng-Cookies gehört, weiß aber nicht, wie ich sie verwenden soll.
Viele der Beispiele, die ich gesehen habe, waren nicht sehr klar und sie verwenden irgendeine Art von Zugriffsrollen oder so. Das will ich nicht Ich möchte nur einen Anmeldefilter. Kann mir jemand ein paar Ideen geben?