拦截路由并重定向到登录

时间:2016-03-29 07:14:39

标签: angularjs authentication cookies routes

采取以下代码。我有一个用户成功登录后创建的cookie。我的API也已经过身份验证。我要做的是在提供路线之前对cookie进行简单检查,唯一的例外是登录路线。

angular
    .module('pizzaGiants.routes', ['ui.router'])
    .config(['$stateProvider', '$locationProvider', '$urlRouterProvider',

        function ($stateProvider, $locationProvider, $urlRouterProvider) {
            $urlRouterProvider.otherwise('/login');

            // Application Routes
            // -----------------------------------
            // add check if cookie exists else redirect to login
            $stateProvider
                .state('login', {
                    url: '/login',
                    templateUrl: 'features/login/login.html',
                    controller: 'loginCtrl'
                })
                .state('attributes', {
                    url: '/attributes',
                    templateUrl: 'features/attributes/attributes.html',
                    controller: 'attributesCtrl'
                })
                .state('users', {
                    url: '/users',
                    templateUrl: 'features/users/users.html',
                    controller: 'usersCtrl'
                })
                .state('signup', {
                    url: '/signup',
                    templateUrl: 'features/signup/signup.html',
                    controller: 'signupCtrl'
                })
                .state('roles', {
                    url: '/roles',
                    templateUrl: 'features/roles/roles.html',
                    controller: 'rolesCtrl'
                })
                .state("fruits", {url: "/fruits",templateUrl: "features/fruits/fruit.html",controller: "fruitCtrl"}).state("colors", {url: "/colors",templateUrl: "features/colors/color.html",controller: "colorCtrl"}).state("contacts", {url: "/contacts",templateUrl: "features/contacts/contact.html",controller: "contactCtrl"})

}]);

1 个答案:

答案 0 :(得分:0)

可能像关注

app.run([
'$rootScope','$location', '$timeout',
    function ($rootScope, $location, $timeout) {
        $rootScope.$on('$stateChangeStart', function () {
            if (// your condition logic) {
                    $timeout(function () {
                        $location.path("/login");
                    }, 1);
            }
        });
    }
]);
相关问题