AngularJS- Inicio de sesión y autenticación en cada ruta y controlador

Tengo una aplicación AngularJS creada usando yeoman, grunt y bower.

Tengo una página de inicio de sesión que tiene un controlador que comprueba la autenticación. Si las credenciales son correctas, vuelvo a la página de inicio.

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

En la página de inicio tengo

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

En elloginController, Compruebo la información de inicio de sesión y, si tiene éxito, configuro el objeto de usuario en la fábrica de servicios. No sé si esto es correcto o no.

Lo que necesito es, cuando el usuario ha iniciado sesión, establece algún valor en el objeto de usuario para que todas las demás páginas puedan obtener ese valor.

Cuando ocurran cambios en la ruta, el controlador debe verificar si el usuario ha iniciado sesión o no. Si no, debe volver a la página de inicio de sesión. Además, si el usuario ya ha iniciado sesión y vuelve a la página, debe ir a la página de inicio. El controlador también debe verificar las credenciales en todas las rutas.

He oído hablar de ng-cookies, pero no sé cómo usarlas.

Muchos de los ejemplos que vi no eran muy claros y usan algún tipo de roles de acceso o algo así. No quiero eso Sólo quiero un filtro de inicio de sesión. ¿Puede alguien darme algunas ideas?

Respuestas a la pregunta(10)

Su respuesta a la pregunta