Ответ
JWT (JSON Web Token) — это компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Состоит из 3 частей:
- Header — содержит тип токена и алгоритм шифрования (например, HMAC SHA256)
- Payload — полезные данные (claims), например, user_id, срок действия
- Signature — подпись, которая проверяет подлинность токена
Пример создания JWT в Go с использованием библиотеки github.com/golang-jwt/jwt:
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"user_id": 123,
"exp": time.Now().Add(time.Hour * 24).Unix(),
})
tokenString, err := token.SignedString([]byte("secret_key"))
Преимущества:
- Стандартизированный формат
- Не требует хранения состояния на сервере
- Можно передавать в URL, заголовках или теле запроса
Недостатки:
- Если токен украден, его нельзя отозвать (до истечения срока)
- Нужно надежно хранить секретный ключ
Видео-ответы
▶
▶
▶
▶