JWT令牌失效的未知原因

时间:2016-01-17 05:42:40

标签: angularjs laravel jwt angular-http-interceptors satellizer

我的laravel-Angular应用程序面临着非常奇怪的问题。我正在使用Tymon JWT在我的每个请求上刷新令牌。我正在使用Satellizer库来处理这些JWT-Tokens,但是,Satellizer似乎没有用于捕获新令牌的响应拦截器。因此我写了自己的拦截器来做到这一点。

.factory('ResponseHttpInterceptor', function ($window) {
    return {
        response: function (response) {
            if (response.headers('Authorization') != null) {
                $window.localStorage.removeItem('satellizer_token');
                $window.localStorage.setItem('satellizer_token', response.headers('Authorization').replace('Bearer ', ''));
            }
            return response;
        }
    }
})

此代码基本上捕获新令牌,并使用新令牌替换本地存储中的现有令牌。

我的测试流程是:

Login -> Make who Am I call -> Logout

注销后,我收到错误Invalid token这种情况不会一直发生。有时流程成功,有时会失败)。此流程通过REST客户端邮递员完美运行。所以我认为我的API没有任何问题

whoami来电后刷新后,附加显示正在传递的新令牌的图片。

enter image description here

enter image description here

注销后我正在清除本地存储空间。谁能告诉我这可能是什么原因?

修改

Route::group(['prefix' => 'api/v1_0'], function () {
   Route::post('login', 'Auth\AuthControllerGeneral@postLogin');
   Route::get('logout', ['middleware' => 'jwt.auth', 'uses' =>    'Auth\AuthControllerGeneral@getLogout']);

   Route::group(['middleware' => ['jwt.refresh', 'jwt.auth']], function() {
       Route::get('whoami', 'Auth\AuthControllerGeneral@loggedInUserInfo');
   });
});

1 个答案:

答案 0 :(得分:0)

检查htaccess你应该在那里有代码

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

AuthContrller与https://github.com/sahat/satellizer/blob/master/examples/server/php/app/Http/Controllers/AuthController.php

相同

有些人忘了检查Authenticate中间件。检查一下

https://github.com/sahat/satellizer/blob/master/examples/server/php/app/Http/Middleware/Authenticate.php

我建议首先尝试默认路由,如同在demo中一样 https://github.com/sahat/satellizer/blob/master/examples/server/php/app/Http/routes.php

仍然没有得到解决方案,然后尝试使用示例客户端结束文件夹。 https://github.com/sahat/satellizer/tree/master/examples/client

您可以将其放入laravel公用文件夹中进行测试。

我发现卫星系统中的一切工作正常,但有些人配置失败。