Angular.js应用程序的身份验证API

时间:2014-04-03 18:43:04

标签: javascript angularjs api

我使用AngularJS构建单页应用程序。我希望代码AnggularJS部分始终检查身份验证情况,每当有连接将数据发送到服务器时,始终使用头信息[X-Access-Token]发送。以下是我使用的代码,但它可能在某处有问题因为它不起作用。我必须手动将标题X-Access-Token的数据添加到函数$ http get,post。你有任何AngularJS的经验,请帮助我!谢谢。

app.factory('myHttpResponseInterceptor',['$q','$location',function($q,$location){
return function (promise) {
    var success = function (response) {
        return response;
        console.log(response);
    };

    var error = function (response) {
        if (response.status == 401) {
            //$state.go('signin');

        }

        return $q.reject(response);
    };

    return promise.then(success, error);
};
}]);

//Http Intercpetor to check auth failures for xhr requests
app.config(['$httpProvider',function($httpProvider) {
  $httpProvider.interceptors.push('myHttpResponseInterceptor');
}]);


app.factory('api', function ($http, $cookieStore, flash, $state) {
return {
  init: function (token) {
    $http.defaults.headers.common['X-Access-Token'] = token || $cookieStore.get('token');
  }
};
});

app.run(function (api) {
  api.init();
});

app.controller('adminProCatController', function($scope, $rootScope, flash, $state, $http, $cookieStore) {

    $http.get('api/v1/categories?image_size=50x50', {headers: {'X-Access-Token': $cookieStore.get('token')}}).success(function(data) {
        $scope.categories = data;
    });
});

1 个答案:

答案 0 :(得分:1)

识别经过身份验证的用户

可能有几种方法可以识别经过身份验证的用户;事实上,可以设置一个全局变量,或创建一个cookie ......但我最喜欢的方法是使用AngularJS服务。 这种方法给我带来了几个好处。 第一个优势与每个AngularJS服务的真实性质密切相关;服务是单例,因此每个服务只有一个实例......这允许在不同的视图,控制器,指令,过滤器和其他服务之间共享数据,而不需要过多地填充全局范围。

您可以参考此article

或者您寻找完整的解决方案 - git