Javascript 安圭拉酒店;代币

Javascript 安圭拉酒店;代币,javascript,angularjs,jwt,Javascript,Angularjs,Jwt,我将AngularJs与JWT Auth一起使用。我已经制作了一个api并对其进行了测试 对于每个请求,api都期望得到一个令牌,对于每个响应,它都返回一个令牌对象。但当我这样尝试时: employeeAppModule.config([ '$httpProvider', function ($httpProvider) { $httpProvider.interceptors.push(function () {

我将AngularJs与JWT Auth一起使用。我已经制作了一个api并对其进行了测试

对于每个请求,api都期望得到一个令牌,对于每个响应,它都返回一个令牌对象。但当我这样尝试时:

employeeAppModule.config([
        '$httpProvider',
        function ($httpProvider) {
            $httpProvider.interceptors.push(function () {
                var token, headers, $cookies;

                //inject cookies
                angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
                    $cookies = _$cookies_;
                }]);

                return {
                    request: function (request) {
                        token = $cookies.get('jwt-token');
                        headers = request.headers || (request.headers = {});

                        if(token != null && token != 'undefined') {
                            headers.Authorization = token;
                        }
                        return request;
                    },
                    response: function (response) {
                        if (typeof response.data.result === 'undefined') {
                            return response;
                        }

                        if(response.status && response.status.code === 401) {
                            alert('token wordt verwijderd');
                        }

                        if(response.data && response.data.result.token && response.data.result.token.length > 10) {
                            $cookies.put('jwt-token', 'Bearer ' + response.data.result.token);
                        }
                        return response;
                    }
                };
            });
        }]);

它不起作用了。如果我在请求/响应之间放置两个警报框,它就会工作。如何解决此问题?

您正在设置
标题
变量的
授权
属性,然后返回
请求

request.headers = headers;
return request;
这应该可以解决问题

不过有几件事:

  • 不要将
    Bearer
    放入cookie本身,只要在每次请求时将其添加到您的头中,它就更优雅了
  • 我不确定它是否是有意的,但您确实不应该在每个请求上都返回令牌对象。如果这是故意的行为,那么我的坏
如果您打算定期更新令牌中的信息,那么每次通话时返回一个新令牌是有意义的,例如,只要用户处于活动状态,您就想延长令牌的有效性。这只是一种意见。尽管我会争论这是否是延长会议的最佳方式。很明显,你其余的主张(双关语)都是真的!:)