Sobes.tech
Junior — Middle
119

Da li imate iskustva sa korišćenjem JSON Web Tokens za autorizaciju ili autentifikaciju?

Компаније где су питане
AstonAston

Одговор од АИ

sobes.tech АИ

Да, JSON Web Tokens (JWT) широко используются для авторизации и аутентификации в веб-приложениях. JWT — это компактный, URL-безопасный способ передачи информации между сторонами в виде JSON-объекта, который можно проверить и доверять ему благодаря цифровой подписи.

В типичном сценарии аутентификации пользователь вводит логин и пароль, сервер проверяет их и, если они корректны, создает JWT с полезной нагрузкой (например, user_id, роли, время истечения). Этот токен отправляется клиенту, который сохраняет его (например, в localStorage или cookie) и прикрепляет к последующим запросам в заголовке Authorization.

Пример создания и проверки JWT в Python с использованием библиотеки PyJWT:

import jwt
import datetime

SECRET_KEY = 'секретный_ключ'

def create_token(user_id):
    payload = {
        'user_id': user_id,
        'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1)
    }
    token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
    return token

def decode_token(token):
    try:
        payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
        return payload['user_id']
    except jwt.ExpiredSignatureError:
        return None  # Токен истек
    except jwt.InvalidTokenError:
        return None  # Некорректный токен

Таким образом, JWT позволяет безопасно передавать информацию о пользователе и управлять сессиями без необходимости хранить состояние на сервере.