定義各個路由的自定義行為

為各個路由定義自定義行為的最簡單方式相當容易。

在此示例中,我們使用它來驗證使用者:

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