#php #jwt #jwt-auth #php-jwt
#php #jwt #php-jwt
Вопрос:
Я новичок в JWT, поэтому заранее приношу извинения.
Я использую библиотеку php-jwt.
Заголовки
include_once("includes/jwt/BeforeValidException.php");
include_once("includes/jwt/ExpiredException.php");
include_once("includes/jwt/JWK.php");
include_once("includes/jwt/JWT.php");
include_once("includes/jwt/SignatureInvalidException.php");
header("Access-Control-Allow-Origin: *");
header("Access-Control-Request-Headers: GET,POST,OPTIONS,DELETE,PUT");
header('Access-Control-Allow-Headers: Authorization, Accept,Accept-Language,Content-Language,Content-Type');
Я генерирую токен, используя следующее:
$secret_key = "***";
$issuer_claim = "***";
$audience_claim = "***";
$issuedat_claim = time(); // issued at
$notbefore_claim = $issuedat_claim; //not useable before in seconds
$expire_claim = time() (60*60); // expire time in seconds
$token = array(
"iss" => $issuer_claim,
"aud" => $audience_claim,
"iat" => $issuedat_claim,
"nbf" => $notbefore_claim,
"exp" => $expire_claim,
);
$jwt = JWT::encode($token, $secret_key);
Однако, когда я декодирую сгенерированный токен с помощью инструмента на jwt.io , это показывает, что токен истекает через 5 минут.
{
"iss": "***",
"aud": "***",
"iat": 1600925201,
"nbf": 1600925201,
"exp": 1600925501
}
Не могли бы вы подсказать мне, как увеличить время истечения срока действия? Несмотря на то, что в полезной нагрузке я указал 60 минут, но токен действителен только в течение 5 минут.
Во-вторых, я хотел знать, как я могу сохранить токен для активного пользователя. Например, для пользователя, который остается неактивным в течение 60 минут, токен должен истечь. Но пользователь, который использует веб-сайт / веб-приложение, не должен выходить из системы, потому что он может быть чем-то занят, и внезапный выход из системы нарушит поток. Я читал о токене обновления в этом отношении, и если вы считаете, что это правильный подход, я был бы признателен, если бы вы могли поделиться каким-нибудь руководством по этому вопросу, потому что я не нашел ни одного, который мог бы дать хорошее представление о том, как выполнить.
Заранее спасибо.
Комментарии:
1. Я попробовал ваш фрагмент кода на sandbox.onlinephpfunctions.com/code /… и получил
iat => 1600930608 nbf => 1600930608 exp => 1600934208
-> exp ровно через 3600 секунд после iat. Какая бы проблема у вас ни была, ее нельзя найти в коде, показанном в вашем вопросе.2. @jps Я обновил вопрос. Пожалуйста, обратите внимание, что в вашей изолированной среде вы не расшифровали токен jwt и не просмотрели значения. Вы просто повторили $expire_claim .
3. конечно, я только повторил претензии, потому что это вся информация, которую вы предоставили ранее.
4. Не могли бы вы, пожалуйста, проверить, совпадает ли время вашего сервера с «реальным» текущим временем?
5. @AITMANSOURMohamed да, только что проверил и подтвердил, что время сервера совпадает с «реальным» текущим временем.