Sobes.tech
Junior — Middle

Можете ли да споделите опита си с използването на JSON Web Tokens в проекти?

sobes.tech AI

Отговор от AI

В PHP проекти съм използвал JSON Web Tokens (JWT) за реализиране на удостоверяване и авторизация на потребители. JWT позволява пренос на информация за потребителя в криптиран вид между клиента и сървъра без необходимост от съхраняване на сесия на сървъра.

Основните стъпки при използване на JWT:

  1. След успешно удостоверяване, потребителят получава JWT, който съдържа полезната натовареност (например, ID на потребителя, роли).
  2. Токенът се подписва с тайна ключ, за да се предотврати фалшифициране.
  3. Клиентът запазва токена (например, в localStorage) и го изпраща в заглавката Authorization при следващите заявки.
  4. Сървърът проверява подписа на токена и извлича данните за определяне на правата за достъп.

Пример за създаване на JWT с помощта на библиотеката firebase/php-jwt:

use Firebase\JWT\JWT;

$payload = [
    'iss' => 'your-domain.com',
    'iat' => time(),
    'exp' => time() + 3600, // срок на валидност 1 час
    'userId' => 123
];

$jwt = JWT::encode($payload, $secretKey, 'HS256');

// За проверка:
$decoded = JWT::decode($jwt, $secretKey, ['HS256']);

Използването на JWT улеснява мащабирането на приложенията, тъй като не изисква съхраняване на сесии на сървъра, но е важно да се настрои правилно срокът на валидност на токена и управлението на неговото обновяване.