Angular没有明显的原因使JWT无效(Angular + Laravel API)

时间:2015-11-11 19:40:20

标签: javascript php angularjs laravel jwt

我正在使用AngularJS + Laravel 5构建一个使用JWT作为身份验证的应用程序。问题是登录到应用程序后,有时它会起作用,有时它不会。

我倾向于认为这更像是角度方面,因为使用Postman测试API永远不会失败,我将令牌复制并粘贴到标题中,一切运行顺利。

当通过Chrome导航时,在登录后我会在请求标头中收到令牌,在localStorage中使用angular保存它,下一个请求会发送新令牌,但服务器会以{error: "token_invalid"}

响应

我的令牌请求就像角度文档说的那样

`return $http({
    url: 'http://localhost:8888/api/authenticate',
        skipAuthorization: true,
        method: 'POST',
        data: { grant_type: 'refresh_token', refresh_token: refreshToken }
    }).then(function(response) {
        var jwt = response.headers().authorization;
        localStorage.setItem('jwt', jwt);
        return jwt;
    });`

使用chrome XHRs,我看到以下内容 我登录到应用程序并获得带有响应标头Authorization:Bearer eyJ0eX...的XHR 我发出第二个请求,应用会自动发送Authorization:Bearer Bearer eyJ0eX...作为请求标头

请注意Bearer由于某种原因而重复,但Laravel的Tymon / JWTAuth库剥离了Bearer方法,只留下了令牌部分(eyJ0eX ...)。 实际上,将Bearer Bearer eyJ0eX...复制为Postman中的标题可以正常工作。 下一个请求出现了真正的问题,我收到了新的令牌Authorization:Bearer eyJ0eX2...,但是当我在新请求中发送它时,我收到401错误,令牌无效,有时它已经过期而不是无效。 在Postman中粘贴Authorization:Bearer eyJ0eX2...也会拒绝令牌,但由于它是一个新令牌,它不应该。

angular / angular-jwt做什么来使刚刚生成但尚未使用的令牌无效? 为什么有时它会起作用?

0 个答案:

没有答案