AngularJs & Tokens

AngularJs & Tokens

本文关键字:Tokens amp AngularJs      更新时间:2023-09-26

我将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;
                    }
                };
            });
        }]);

它不起作用。如果我在请求/响应之间放了几个警告框,它就起作用了。我该如何解决这个问题?

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

request.headers = headers;
return request;

这应该能解决问题。

不过有几件事:

  • 不要将Bearer放在cookie中,只需在每次请求时将其添加到您的头中,它会更优雅
  • 我不确定它是否是有意的,但你真的不应该在每个请求上都返回一个令牌对象。如果这是故意的行为,那我的错