Что такое JWT на примере Express.js?
Этот вопрос проверяет знание механизма аутентификации и обмена данными с использованием JSON Web Token (JWT).
Короткий ответ
JWT (JSON Web Token) — это компактный токен, используемый для аутентификации и обмена информацией между сторонами. Он состоит из трех частей: заголовка (Header), полезной нагрузки (Payload) и подписи (Signature). JWT передает информацию безопасно, обычно используется для аутентификации в API.
Длинный ответ
Основы JWT:
1. Структура:
JWT состоит из трех частей, разделенных точками:
header.payload.signature- Header (Заголовок): Указывает тип токена и алгоритм шифрования.
- Payload (Полезная нагрузка): Содержит данные, такие как пользовательский ID или права доступа.
- Signature (Подпись): Подтверждает, что токен не был изменен.
2. Пример JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjEsIm5hbWUiOiJKb2huIERvZSJ9.aYhN8X5iG6l4k9eErXYb3ktLS_RbJ1D2OE5zL5dXqF8
3. Как работает JWT:
- Пользователь входит в систему, сервер генерирует JWT с ключом подписи.
- В последующих запросах токен отправляется на сервер для проверки прав доступа.
4. Преимущества:
- Простота передачи через HTTP-заголовки.
- Не требует хранения сессий на сервере.
- Поддерживает множество библиотек для работы в разных языках.
5. Пример использования:
const jwt = require('jsonwebtoken');
const token = jwt.sign({ userId: 1, role: 'admin' }, 'secretKey', { expiresIn: '1h' });
console.log(token); // Генерация JWT
JWT — это удобный и безопасный способ аутентификации и передачи данных, особенно в приложениях с RESTful API.