使用$ routeChangeStart更改多个URL

时间:2016-11-24 07:10:08

标签: javascript angularjs routes

大家好,我很难搞清楚这个想法。我有这个网站,如果用户没有身份验证我应该限制一些网址。我查看了一些问题,发现了与this类似的内容。但这并不是我想要的。

所以我有一些链接不需要用户身份验证,但可以访问网址。

需要访问和用户身份验证的其他链接。

所以这是我的app.js看起来

angular.module('efutures', [
    'ngRoute',
    'ngCookies',
    'ui.bootstrap',



]).config(['$routeProvider', '$httpProvider', function ($routeProvider, $httpProvider) {

    $routeProvider.when('/login', {
        templateUrl: 'app/pages/login.html',
        controller: 'LoginController',
        access: {
            allowAnonymous: true   //no need auth
        }
    })
        .when('/signup', {
            templateUrl: 'app/pages/Signup.html',
            controller: 'SignupController',
            access: {
                allowAnonymous: true           //no need auth
            }
        })
        .when('/enteremail', {
            templateUrl: 'app/pages/reset pages/reenteremail.html',
            controller: 'EmailController',
            access: {
                allowAnonymous: true   //no need auth
            }
        })
        .when('/password-reset', {
            templateUrl: 'app/pages/reset pages/password.reset.html',
            controller: 'ResetPwdController',
            access: {
                allowAnonymous: false   //needs auth
            }
        })
    .when('/dashboard', {
        templateUrl: 'app/pages/dashboard.html',
        controller: 'DashboardController',
        access: {
            allowAnonymous: false    //needs auth
        }
    })
    .when('/registration', {
        templateUrl: 'app/pages/registration1.html',
        controller: 'registationController'
        access: {
           allowAnonymous: false     //needs auth
        }
    });

    $routeProvider.otherwise({
        redirectTo: '/login'
    });



}]).run(run);

run.$inject = ['$rootScope', '$location', '$cookieStore', '$http'];
function run($rootScope, $location, $cookieStore, $http) {

    $rootScope.hasauth = localStorage.getItem('hasauth');

    $rootScope.username = localStorage.getItem('username');

    $rootScope.$on('$routeChangeStart', function (event, next, current) {
        //console.log($rootScope.hasauth);
        //console.log(next.access.allowAnonymous);
        if (next.access.allowAnonymous || $rootScope.hasauth === null) {
            $location.path('/login');

        }
        else {
            event.preventDefault();
        }

    });

}

如上所述解释代码,我有3页不需要身份验证,可以访问网址。登录后我应该限制返回这3页但应该访问其他剩余的

验证由loacalStorage hasauth执行,登录时返回true ,否则验证为null。

我该如何处理?非常感谢帮助。

0 个答案:

没有答案