Laravel/jwt-auth和Angular/Satellizer应用程序出现随机400"token_invalid"错误

DJC*_*DJC 5 php nginx jwt angularjs satellizer

我有一个Angular应用程序,它使用我在Laravel中构建的API,并且我使用jwt-auth进行令牌管理,并在前端使用satellizer来为每个请求发送令牌.

我的生活环境(无论是前端和API - 一旦应用程序完成后,将被移动到不同的服务器),目前由2个带有负载平衡器Nginx的运行AWS EC2实例.两台服务器都具有相同的jwt密钥.

但是,目前我无法解决任何模式,我随机从我的api返回400"token_invalid"错误.它不是一个特定的api路由,也不是应用程序的每个负载.当我从我的/客户端端点获得400错误时,其他请求将返回200.下次,所有人都将返回200.之后的时间我可能会为/ clients返回200但是/ users的400错误.

这可能是我使用负载均衡器的问题吗?正如我所说,jwt密钥在两台服务器上是相同的 - 因为所有代码都在GIT中.

我没有使用jwt.refresh中间件.

还有一点需要提一点,我在生产过程中通过Homestead在本地运行应用程序时,不会得到400错误.

编辑 -这好像注销(这将清除我的两个用户对象(仅基本信息),并从本地存储的令牌,清除我的缓存,然后重新登录最常引起的误差-这是有帮助吗?

以下是我的一个api电话的示例.

App.js

.service('ClientsService', function($http, $q, __env) {
    this.index = function () {
        var deferred = $q.defer();
        $http.get(__env.apiUrl + '/clients')
            .then(function successCallback(response) {
                    console.log(response.data);
                    deferred.resolve(response.data);
                },
                function errorCallback(response) {
                    console.log(response);
                });
        return deferred.promise;
    }
})
Run Code Online (Sandbox Code Playgroud)

ClientsController.js

.controller('ClientsController', function(ClientsService, $stateParams, $mdDialog, $mdToast) {
            var vm = this;
            ClientsService.index().then(function(clients) {
                console.log('ClientsCtrl init');
                vm.clients = clients.data;
            });
            // other controller code
})
Run Code Online (Sandbox Code Playgroud)

我真的很难调试这个,所以任何帮助都会非常感激.如果需要更多信息,请告诉我.

Kev*_*hew 0

https://github.com/tymondesigns/jwt-auth/issues/1583

解决方案:在 .env 文件中使用相同的 jwt 密钥