AngularJS:根据用户是否授权,用angularjs保护路由?

前端之家收集整理的这篇文章主要介绍了AngularJS:根据用户是否授权,用angularjs保护路由?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始使用我正在开发的AngularJS应用程序,一切顺利,但是我需要一种保护路由的方式,以便用户不会被允许进入该路由,如果没有登录,我明白重要性在服务端也保护,我会照顾这个.

我已经找到了一些保护客户端的方法,一个似乎使用以下

$scope.$watch(
    function() {
        return $location.path();
    },function(newValue,oldValue) {
        if ($scope.loggedIn == false && newValue != '/login') {
            $location.path('/login');
        }
    }
);

我在哪里需要把它放在app.js的.run中?

而我发现的另一种方法是使用一个指令并使用on-routechagestart

信息在这里http://blog.brunoscopelliti.com/deal-with-users-authentication-in-an-angularjs-web-app

我真的有兴趣在任何人的帮助和反馈推荐的方式.

使用解析可以帮助您:(代码未测试)
angular.module('app' []).config(function($routeProvider){
    $routeProvider
        .when('/needsauthorisation',{
            //config for controller and template
            resolve : {
                //This function is injected with the AuthService where you'll put your authentication logic
                'auth' : function(AuthService){
                    return AuthService.authenticate();
                }
            }
        });
}).run(function($rootScope,$location){
    //If the route change Failed due to authentication error,redirect them out
    $rootScope.$on('$routeChangeError',function(event,current,prevIoUs,rejection){
        if(rejection === 'Not Authenticated'){
            $location.path('/');
        }
    })
}).factory('AuthService',function($q){
    return {
        authenticate : function(){
            //Authentication logic here
            if(isAuthenticated){
                //If authenticated,return anything you want,probably a user object
                return true;
            } else {
                //Else send a rejection
                return $q.reject('Not Authenticated');
            }
        }
    }
});

猜你在找的Angularjs相关文章