Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Mmaryswk 07 сентября 2025 11:15

Какой код для авторизации?

Ответ нейросети

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;
  • добавить пример проверки доступа к “защищённому” ресурсу по токену.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Какой код для авторизации?
Задача понятна. Ниже приведу простой учебный пример “код для авторизации” на языке 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; - добавить пример проверки доступа к “защищённому” ресурсу по токену.