Я ищу несколько часов и не могу найти решение этой проблемы.
Это код для создания токена JWT. Я использовал библиотеку https://github.com/firebase/php–jwt .
$tokenId = base64_encode(mcrypt_create_iv(32)); $issuedAt = time(); $notBefore = $issuedAt + 10; //Adding 10 seconds $expire = $notBefore + 60; // Adding 60 seconds $serverName = 'serverName'; // Retrieve the server name from config file $secretKey = base64_decode(getenv('JWT_SECRET')); $data = [ 'iat' => $issuedAt, // Issued at: time when the token was generated 'jti' => $tokenId, // Json Token Id: an unique identifier for the token 'iss' => $serverName, // Issuer 'nbf' => $notBefore, // Not before 'exp' => $expire, // Expire 'data' => [ // Data related to the signer user 'userId' => '1', // userid from the users table 'userName' => $UserName, // User name ] ]; $jwt = JWT::encode( $data, //Data to be encoded in the JWT $secretKey, // The signing key 'HS256' // Algorithm used to sign the token ); $unencodedArray = ['jwt' => $jwt]; echo json_encode($unencodedArray);
И я проверяю токен на https://jwt.io/
Может ли кто-нибудь помочь мне с этой проблемой? Я сейчас новичок в JWT. Кстати, мой проект – это Slim API.
Большое спасибо.
Проверка подписи не выполняется, потому что вы не передаете правильный секретный ключ https://jwt.io/. Вам нужно передать значение $secretKey
из кода PHP. Согласно скриншоту вы передаете secret
.