AngularJS - логин и аутентификация на каждом маршруте и контроллере

У меня есть приложение AngularJS, созданное с использованием yeoman, grunt и bower.

У меня есть страница входа, на которой есть контроллер, который проверяет подлинность. Если учетные данные верны, я перенаправляю на домашнюю страницу.

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";
        }
    }
});

На главной странице у меня есть

<span class="user-info">
    Welcome,
    {{user.name}}
</span>
<span class="logout"><a href="" ng-click="logoutUser()">Logout</a></span>

вloginControllerЯ проверяю информацию для входа иПосле успешного завершения я установил объект пользователя на фабрике сервисов. Я нене знаю, правильно ли это или нет.

Что мне нужно, так это то, что когда пользователь вошел в систему, он устанавливает некоторое значение в пользовательском объекте, чтобы все остальные страницы могли получить это значение.

Всякий раз, когда происходят какие-либо изменения маршрута, контроллер должен проверить, вошел ли пользователь в систему или нет. Если нет, он должен перенаправить на страницу входа. Также, если пользователь уже вошел в систему и вернулся на страницу, он должен перейти на домашнюю страницу. Контроллер также должен проверить учетные данные на всех маршрутах.

Я слышал о нг-печенье, но я нене знаю, как их использовать.

Многие из примеров, которые я видел, были не очень понятны, и они используют какие-то роли доступа или что-то в этом роде. Я неЯ не хочу этого. Я хочу только фильтр входа. Может кто-нибудь дать мне несколько идей?

Ответы на вопрос(10)

Ваш ответ на вопрос