Имеем rest api, при авторизации /api/user-login токен генерируется без ошибок авторизации, с использованием того же токена в /api/user-profile проходит без проблем. При использовании токена в методе /api/forum-new-message ошибка что токен якобы неверный. Я убрал этот код и выяснилось что возникает ошибка при расшифровке токена но почему? Код везде одинаковый, методы разные. Uncaught UnexpectedValueException: Wrong number of segments
<?php
require $_SERVER['DOCUMENT_ROOT'].'/engine/core.php';
use RedBeanPHP\R;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
header('Content-Type: application/json');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$token = htmlspecialchars($_POST['token']);
if(empty($token)){
echo json_encode(['status' => 'error', 'message' => 'Токен не может быть пустым!']);
}
$key = $_ENV['SECRET_KEY'];
try {
$decoded = JWT::decode($token, new Key($key, 'HS256'));
$userId = $decoded->userId;
$user = R::load('users', $userId);
$userData = [
'nickname' => $user->nickname,
'email' => $user->email,
'status' => $user->status,
'register_date' => $user->register_date
];
echo json_encode(['status' => 'success', 'data' => $userData]);
} catch (ExpiredException $e) {
echo json_encode(['status' => 'error', 'message' => 'Токен устарел!']);
} catch (SignatureInvalidException $e) {
echo json_encode(['status' => 'error', 'message' => 'Неверная подпись токена!']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Неверный токен!']);
}
} else {
echo json_encode(['status' => 'error', 'message' => 'Метод не поддерживается!'], JSON_UNESCAPED_UNICODE);
}
<?php
require $_SERVER['DOCUMENT_ROOT'].'/engine/core.php';
use RedBeanPHP\R;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
header('Content-Type: application/json');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$token = htmlspecialchars(isset($_POST['token']));
$message = htmlspecialchars(isset($_POST['message']));
$subtopic_id = intval(isset($_POST['subtopic_id']));
if(empty($token) || empty($message) || empty($subtopic_id)){
echo json_encode(['status' => 'error', 'message' => 'Заполните все поля!']);
exit;
}
$key = $_ENV['SECRET_KEY'];
//try {
$decoded = JWT::decode($token, new Key($key, 'HS256')); //Тут ошибка
$userId = $decoded->userId;
$subtopic = R::load('forum_subtopics', $subtopic_id);
if (!$subtopic) {
echo json_encode(['status' => 'error', 'message' => 'Подтема не найдена!']);
exit;
}
$newMessage = R::dispense('forum_messages');
$newMessage->subtopic_id = $subtopic_id;
$newMessage->message = $message;
$newMessage->user_id = $userId;
$messageId = R::store($newMessage);
echo json_encode(['status' => 'success', 'message' => 'Сообщение опубликовано!']);
/*
} catch (ExpiredException $e) {
echo json_encode(['status' => 'error', 'message' => 'Токен устарел!']);
} catch (SignatureInvalidException $e) {
echo json_encode(['status' => 'error', 'message' => 'Неверная подпись токена!']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Неверный токен!']);
}
*/
} else {
echo json_encode(['status' => 'error', 'message' => 'Метод не поддерживается!'], JSON_UNESCAPED_UNICODE);
}