我不明白,智威汤逊刷新令牌的行为(LARAVEL)
问题描述:
我刚才想JWT权威性与LARAVEL这https://github.com/tymondesigns/jwt-auth我不明白,智威汤逊刷新令牌的行为(LARAVEL)
但有件事情我无法理解。在他们的配置便将:
'ttl' => env('JWT_TTL', 60), // in munutes
'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), // in minutes
我understant什么:令牌的生活是1小时,可以2周
但3小时后,如果我尝试查询的东西,它说:“令牌已过期”内被刷新。
此系统是否意味着用户必须在每小时内更新/刷新其令牌,但限制为2周?我不明白。
用户如何坚持使用这种系统登录?刷新令牌如何在第一个小时后有用,虽然还没有2周,但我无法获得新的令牌?
感谢
UPDATE:CODE
配置/ 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'));
}
}
,这是FLOW:
请求到/登录与{用户名:XXX,密码:XXX} 响应的 /登录> {令牌:XXXXXXX}
请求到/测试直后(10秒)与承载XXXXXX 响应的 /测试>在HEADER与新令牌良好JSON响应
请求到/测试后3分钟(这样3mins 10秒有过去现在,比刷新限制的5分钟以下的) 响应/测试>令牌过期
我不理解。
答
访问令牌过期后,您可以使用刷新令牌来获取新的访问令牌,而不要求用户再次输入其用户名和密码。 只有刷新令牌过期后,用户需要重新登录。
但3小时后,如果我试图查询一些东西,它说“令牌过期”。
这是因为访问令牌已过期。
此系统是否意味着用户必须在每小时内更新/刷新其令牌,但限制为2周?我不明白。
是的。您将刷新令牌保留在客户端系统中,并在访问令牌过期时使用它来请求新的访问令牌。
以及它不工作,甚至与刷新令牌,使用它说:一个小时后 – darkylmnx
令牌过期也许是我做错了,我怎么能达致这:“你可以使用刷新标记获得新的访问令牌,而不要求用户输入“? – darkylmnx
您必须将刷新令牌发送到之前获取访问令牌的相同端点。然后,请求标头应包含 – jps