2016-12-25 3 views
0

Я просто пытался JWT Auth с Laravel и это https://github.com/tymondesigns/jwt-authЯ не понимаю поведение JWT ReFRESH лексемы (Laravel)

Но есть что-то я не могу понять. В своей конфигурации они поставили:

'ttl' => env('JWT_TTL', 60), // in munutes 
'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), // in minutes 

Что я understant: лексема поживем является 1час и может обновляться в течение 2-х недель

Но после 3 часов, если я пытаюсь запросить что-то, он говорит: «Срок действия маркера истек» ,

Эта система означает, что пользователь должен обновить/обновить свой токен в течение каждого часа, но с лимитом в 2 недели? Я не понимаю.

Как пользователь может сохранить логин с помощью такой системы? Как обновить токен полезно, когда после первого часа, хотя еще не было 2 недели, я не могу получить новый токен?

благодарит

ОБНОВЛЕНИЕ: КОД

конфигурации/jwt.php

'ttl' => 2, // 2 minutes 
'refresh_ttl' => 5, // 5 minutes 

маршруты/api.php

Route::post('/login', '[email protected]'); 
Route::get('/test', '[email protected]')->middleware('jwt.auth', 'jwt.refresh'); 

HTTP/Контроллеры/AuthController

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use JWTAuth; 
use Tymon\JWTAuth\Exceptions\JWTException; 

class AuthController extends Controller 
{ 
    public function test() 
    { 
     return response()->json(['coucou' => 1]); 
    } 

    public function login(Request $request) 
    { 
     // grab credentials from the request 
     $credentials = $request->only('email', 'password'); 

     try { 
      // attempt to verify the credentials and create a token for the user 
      if (! $token = JWTAuth::attempt($credentials)) { 
       return response()->json(['error' => 'invalid_credentials'], 401); 
      } 
     } catch (JWTException $e) { 
      // something went wrong whilst attempting to encode the token 
      return response()->json(['error' => 'could_not_create_token'], 500); 
     } 

     // all good so return the token 
     return response()->json(compact('token')); 
    } 
} 

И ЭТО ПОТОК:

запрос к /Войти с {имя пользователя: ххх, пароль: ххх} ответ из /Войти> {лексем: XXXXXXX}

запрос до /тест прямо после (10 секунд) с Носитель xxxxxx ответа из /тест> хорошего ответа JSON с новым токеном в HEADER

запрос к /теста после 3 минут (так 3mins 10 секунд есть прошлое в настоящее время, меньше 5мина предела обновления) ответ из /тест> маркер истек

Я не понимаю.

ответ

2

После того, как токен доступа истек, вы можете использовать токен обновления, чтобы получить новый токен доступа, не запрашивая у пользователя повторного ввода его имени пользователя и пароля. Только после того, как токен обновления истек, пользователю необходимо снова войти в систему.

Но после 3 часов, если я попытаюсь что-то запросить, в нем говорится, что «токен истек».

Это потому, что токен доступа истек.

Эта система означает, что пользователь должен получить свой токен, обновленный/обновленный в течение каждого часа, но с лимитом в 2 недели? Я не понимаю.

Да. Вы сохраняете токен обновления в своей клиентской системе и используете его для запроса нового токена доступа, когда токен доступа истек.

+1

ну, это не работает, даже с токеном обновления, он говорит: токен истек через час – darkylmnx

+0

Возможно, я делаю это неправильно, как я могу это понять: «вы можете использовать токен обновления, чтобы получить новый токен доступа, не спрашивая пользователя о вводе "? – darkylmnx

+0

вам нужно отправить токен обновления в ту же конечную точку, с которой вы получили токен доступа раньше. Затем заголовок запроса должен содержать – jps

Смежные вопросы