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

时间:2016-08-22 11:52:19

标签: php angularjs nginx jwt satellizer

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

我的实时环境(对于前端和API - 在应用完成后将移动到不同的服务器)此时由2个运行带有负载均衡器的nginx的AWS EC2实例组成。两台服务器都有相同的jwt密钥。

然而,目前我无法解决任何模式,我会随机获得400" token_invalid"从我的api返回的错误。它不是一个特定的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;
    }
})

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
})

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

1 个答案:

答案 0 :(得分:0)

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

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

相关问题