在angularjs

时间:2016-03-18 10:06:55

标签: angularjs spring jwt

我在后端实现了jwt stateless,所以除了登录和注册之外,所有其他方法都必须在angularjs中拦截并在请求头中向服务器发送auth令牌。但令牌不发送意味着没有在控制台的reqest头中看到(开发人员工具)

这是我的interceptor.js:

/**
 * 
 */
/* Interceptor declaration */
rootApp.factory('authInterceptor', function ($rootScope, $q, $sessionStorage, $location,$window) {
    return {
        request: function (config) {
            //config.headers['Content-Type'] = 'application/json';
            config.headers = config.headers || {};
            if ($window.sessionStorage.token) {
                config.headers.Authorization =  'Bearer '  + $window.sessionStorage.token;
                //config.headers['x-auth-token'] ='Bearer '  + $window.sessionStorage.token;
            }
            return config;
        },
        response: function (response) {

            if(response.status === 200){                
                if(response.data && response.data.success === false){
                    if($rootScope.authFailureReasons.indexOf(response.data.reason) !== -1){
                        $location.path('/login');
                    }
                }
            }

            if (response.status === 401) {
                $location.path('/');
            }

            return response || $q.when(response);
        },
        'responseError': function (rejection) {
            return $q.reject(rejection);
        }
    };
});

rootApp.config(['$httpProvider', function ($httpProvider) {
      // $httpProvider.interceptors.push('headerInterceptor');
        $httpProvider.interceptors.push('authInterceptor');
    }]);

service.js文件是:

rootApp.service('adminService', function ($rootScope, $http, $q,$window) {

    return {
        inviteUser: function (user) {

            var deferred = $q.defer();

            $http({
                method: 'POST',
                url:$rootScope.baseUrl+'api/v1/admin/user/add',
                data:user


            }).success(function (response, status, headers, config) {



                deferred.resolve(response);
            }).error(function () {
                // Something went wrong.
                deferred.reject({'success': false, 'msg': 'Oops! Something went wrong. Please try again later.'});
            });

            return deferred.promise;

        }
    };
});

在服务器端也允许在标题中使用X-AUTH-TOKEN。我哪里出错了 请帮忙。

1 个答案:

答案 0 :(得分:1)

嘿,我最近在我的Ionic应用程序中进行了第一次令牌验证。是的,这是一个简单的步骤,但如果你不是语言PRO,实现可能需要一些时间.. 你可以试试这个。 https://devdactic.com/user-auth-angularjs-ionic/ 这是基于令牌的AUTH网上最好的,经过测试的教程之一。 也许这可以帮助您找到错误!