Какой код для авторизации?
Ответ нейросети
07 сентября 2025 11:15
Задача понятна. Ниже приведу простой учебный пример “код для авторизации” на языке Python, который показывает базовый сценарий:
- проверка логина и пароля (аутентификация),
- выдача простого токена доступа после успешной аутентификации (авторизация),
- базовая проверка валидности токена.
Важно: это учебный пример. В реальных приложениях используйте готовые библиотеки безопасности, хранение паролей в БД, HTTPS и т. д.
Что мы сделаем шаг за шагом
- Шаг 1. Храним хеши паролей для пользователей (без хранения открытых паролей).
- Шаг 2. Проверяем введённый логин и пароль — если совпало, считаем пользователя аутентифицированным.
- Шаг 3. Генерируем одноразовый/временный токен доступа и сохраняем его вместе с временем истечения.
- Шаг 4. Предоставляем функцию проверки валидности токена, чтобы защищённые участки можно было открыть только по действительному токену.
Пример кода (Python 3)
Пример простейшей аутентификации и авторизации (Python 3)
import hashlib import secrets import time
Хеширование паролей (для учебного примера)
def hash_password(pw: str) -> str: return hashlib.sha256(pw.encode()).hexdigest()
База пользователей (логин -> хеш пароля)
USERS = { "alice": hash_password("password123"), "bob": hash_password("qwerty"), }
Хранилище активных токенов: token -> (login, expiry_timestamp)
TOKENS = {}
TOKEN_LIFETIME = 300 # 5 минут
def verify_credentials(login: str, pw: str) -> bool: pw_h = hash_password(pw) return login in USERS and USERS[login] == pw_h
def generate_token(login: str) -> str: rnd = secrets.token_hex(16) ts = int(time.time()) raw = f"{login}:{ts}:{rnd}" token = hashlib.sha256(raw.encode()).hexdigest() TOKENS[token] = (login, ts + TOKEN_LIFETIME) return token
def is_token_valid(token: str) -> bool: data = TOKENS.get(token) if not data: return False login, expiry = data if time.time() > expiry: del TOKENS[token] return False return True
def main(): login = input("Логин: ").strip() pw = input("Пароль: ").strip() if verify_credentials(login, pw): token = generate_token(login) print("Успешный вход.") print("Ваш токен доступа:", token) print("Проверка токена:", "валиден" if is_token_valid(token) else "недействителен") else: print("Неверный логин или пароль.")
if name == "main": main()
Как это работает
- Аутентификация: функция verify_credentials проверяет, совпадают ли введённый логин и пароль с сохранёнными хешами.
- Авторизация: после успешной аутентификации выдается токен (token). Этот токен выступает своего рода «ключом» к доступу к защищённым ресурсам.
- Валидация токена: функция is_token_valid проверяет, не истёк ли срок действия токена и существует ли он в хранилище TOKENS.
Некоторые замечания и варианты улучшений
- В реальных проектах пароли не хранятся как простые хеши; применяют солёные хеши и bcrypt/scrypt/Argon2.
- Вместо произвольного токена можно использовать JWT (JSON Web Token) или OAuth2-подход, но это требует дополнительных знаний и библиотек.
- Не храните токены в памяти между запусками сервера; используйте базу данных или кэш сессий.
- Всегда используйте HTTPS для передачи учётных данных.
- Не выводите пароли пользователю и не храните их в логах.
Если хочешь, могу:
- адаптировать пример под JavaScript (Node.js) или Java;
- показать версию с JWT;
- добавить пример проверки доступа к “защищённому” ресурсу по токену.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



