Код для авторизации
Ответ нейросети
17 апреля 2026 10:04
Ниже приведён простой, понятный пример кода для авторизации на Python. Это базовая консольная реализация: регистрация пользователя, вход (логин) с проверкой пароля и создание временного токена-сессии. Подойдёт для средней школы и поможет понять основные идеи: хранение паролей в виде хеша, сравнение паролей и работа с сессиями.
Что важно понять перед кодом
- Авторизация (authentication) — проверка личности пользователя по данным (логин/пароль).
- Безопасность: хранить пароли как хеши с солью, а не в чистом виде.
- Пример ниже — локальная демонстрация. Для реального приложения используйте HTTPS и надёжное управление сессиями/токенами.
Пошаговый план
- Создать хранилище пользователей и активных сессий.
- Реализовать хеширование паролей с солью.
- Реализовать регистрацию: создать запись пользователя с солью и хешем пароля.
- Реализовать вход: проверить введённый пароль, если всё ок — выдать токен (сессию).
- Реализовать верификацию токена: проверить, не просрочен ли токен и к какому пользователю он привязан.
- Привести небольшой пример использования.
Код (практический и простой для понимания)
import os import hashlib import base64 import time
class SimpleAuth: def init(self): # username -> {'salt': bytes, 'hash': bytes} self.users = {} # token -> {'user': username, 'exp': timestamp} self.sessions = {}
def _hash_password(self, password, salt=None):
# Если соль не передали, создаём новую
if salt is None:
salt = os.urandom(16)
# Хешируем пароль с использованием PBKDF2-HMAC-SHA256
dk = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000)
return salt, dk
def register(self, username, password):
# Регистрация нового пользователя
if username in self.users:
return False # пользователь уже существует
salt, dk = self._hash_password(password)
self.users[username] = {'salt': salt, 'hash': dk}
return True
def login(self, username, password):
# Попытка входа: возвращает токен, если успешно
user = self.users.get(username)
if not user:
return None
salt = user['salt']
_, dk = self._hash_password(password, salt)
if dk == user['hash']:
token = self._create_token(username)
return token
return None
def _create_token(self, username):
# Создание простого токена-сессии
token = base64.urlsafe_b64encode(os.urandom(24)).decode().rstrip('=')
self.sessions[token] = {'user': username, 'exp': time.time() + 3600} # срок 1 час
return token
def verify_token(self, token):
# Проверка валидности токена
sess = self.sessions.get(token)
if not sess:
return None
if time.time() > sess['exp']:
del self.sessions[token]
return None
return sess['user']
Пример использования
if name == "main": auth = SimpleAuth()
# Регистрация пользователя
print("Регистрация alice:", auth.register("alice", "secret123")) # True
# Попытка входа
token = auth.login("alice", "secret123")
print("Получен токен после входа:", token)
# Верификация токена
user = auth.verify_token(token)
print("Токен валиден для пользователя:", user)
# Пример неуспешного входа
bad_token = auth.login("alice", "wrongpass")
print("Попытка входа с неверным паролем вернула токен:", bad_token)
Пояснения к коду
- Регистрация: сохраняем соль и хеш пароля для каждого пользователя в словаре self.users.
- Хеширование: используем pbkdf2_hmac с SHA-256 и 100000 итерациями — нормальная практика для учебных задач.
- Вход: сравниваем полученный хеш введённого пароля с сохранённым хешем; при совпадении создаём токен-сессию.
- Токен: простой случайный токен, привязанный к пользователю и сроку действия. В реальном проекте можно использовать JWT или другую систему управления сессиями.
- Безопасность: в примере нет базы данных, файл или переменные — это учебная демонстрация. Не храните пароли в открытом виде; ограничивайте попытки входа и обрабатывайте исключения в продакшн-коде.
Если нужна веб-реализация (например, на Flask) или другой язык/уровень сложности, скажите – адаптирую под учебную задачу.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



