AngularJs&令牌

时间:2016-05-17 11:32:28

标签: javascript angularjs jwt

我在JWT Auth中使用AngularJs。我已经制作了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;
                    }
                };
            });
        }]);

它无法正常工作。如果我在请求/响应之间放置了几个警告框,它就会正常工作。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

您在Authorization变量上设置headers属性,然后返回request

request.headers = headers;
return request;

这应该可以解决问题。

但有几件事情:

  • 不要将Bearer放入Cookie本身,只需在每次请求时将其添加到标题中,它就会更优雅。
  • 我不确定它是否有意,但你真的不应该在每一个请求上都返回一个令牌对象。如果这是预期的行为,那么我的不好!