定义各个路由的自定义行为

为各个路由定义自定义行为的最简单方式相当容易。

在此示例中,我们使用它来验证用户:

1)routes.js:为任何所需的路线创建一个新属性(如 requireAuth

angular.module('yourApp').config(['$routeProvider', function($routeProvider) {
    $routeProvider
        .when('/home', {
            templateUrl: 'templates/home.html',
            requireAuth: true
        })
        .when('/login', {
            templateUrl: 'templates/login.html',
        })
        .otherwise({
            redirectTo: '/home'
        });
}])

2)在未绑定到 ng-view 内部元素的顶层控制器中(为避免与角度 $routeProvider 发生冲突),检查 newUrl 是否具有 requireAuth 属性并采取相应措施

angular.module('YourApp').controller('YourController', ['$scope', 'session', '$location',
    function($scope, session, $location) {

        $scope.$on('$routeChangeStart', function(angularEvent, newUrl) {
            
            if (newUrl.requireAuth && !session.user) {
                // User isn’t authenticated
                $location.path("/login");
            }
            
        });
    }
]);