Javascript 使用Laravel、JWT和Angularjs批处理代币

Javascript 使用Laravel、JWT和Angularjs批处理代币,javascript,php,angularjs,laravel,jwt,Javascript,Php,Angularjs,Laravel,Jwt,我有一个用Laravel编写的API和一个用Angularjs编写的前端 为了进行身份验证,我使用JSON Web令牌。 正如我们所知,angularjs以非阻塞i/o方式发出ajax请求 对于JWT,每个请求都包含一个到服务器的身份验证令牌,服务器检查其是否有效,使其无效,然后在响应上提供一个新令牌以用于下一个请求 由于angular一次可以发出多个请求,这意味着令牌链不能正常工作 以下是我正在使用的angularjs插件: 下面是我正在使用的laravel插件: 该插件的doco在Rub

我有一个用Laravel编写的API和一个用Angularjs编写的前端

为了进行身份验证,我使用JSON Web令牌。 正如我们所知,angularjs以非阻塞i/o方式发出ajax请求

对于JWT,每个请求都包含一个到服务器的身份验证令牌,服务器检查其是否有效,使其无效,然后在响应上提供一个新令牌以用于下一个请求

由于angular一次可以发出多个请求,这意味着令牌链不能正常工作

以下是我正在使用的angularjs插件:

下面是我正在使用的laravel插件:

该插件的doco在Ruby插件中提供了一个建议的解决方案:

但我不认识鲁比


我需要一个在angular和PHP上处理JWT的示例实现,并考虑批处理令牌

您可以这样做:

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 = {});
                        request.headers = headers;
                        if(token != null && token != 'undefined') {
                            request.headers.Authorization = 'Bearer' + 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', response.data.result.token);
                        }
                        return response;
                    }
                };
            });
        }]);