Ответ
JWT (JSON Web Token) — это стандартизированный формат токена, который содержит закодированные данные (payload) в JSON. Он состоит из 3 частей: заголовка (header), полезной нагрузки (payload) и подписи (signature). Подписывается криптографически, может содержать срок действия.
Обычный токен — это произвольная строка (например, UUID), не несущая информации сама по себе. Сервер хранит его в базе и проверяет валидность при запросе.
Пример JWT:
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"user_id": 123,
"exp": time.Now().Add(time.Hour * 1).Unix(),
})
signedToken, _ := token.SignedString([]byte("secret"))
Обычный токен:
token := uuid.New().String()
// сохраняем в БД и проверяем при запросе
Ключевые отличия:
- JWT самодостаточен (данные внутри), обычный токен требует проверки на сервере.
- JWT нельзя отозвать до истечения срока, обычный токен можно удалить из БД.
- JWT больше по размеру из-за кодирования данных.