РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
447 of 643 menu

Функция check_password_hash

Функция check_password_hash применяется для проверки пароля пользователя при аутентификации. Первым параметром передаётся хеш пароля, который был сохранён ранее с помощью функции generate_password_hash. Вторым параметром передаётся пароль в открытом виде, введённый пользователем. Функция возвращает True, если пароль совпадает с хешем, и False в противном случае. Алгоритм хеширования определяется автоматически из формата переданного хеша.

Синтаксис

check_password_hash(pwhash, password)

Пример

Давайте создадим хеш пароля и проверим его с помощью функции check_password_hash:

from flask import Flask from werkzeug.security import generate_password_hash, check_password_hash app = Flask(__name__) password = 'abcde' password_hash = generate_password_hash(password) @app.route('/') def index(): res = check_password_hash(password_hash, password) return str(res)

Результат выполнения кода:

True

Пример

Давайте проверим неверный пароль:

from flask import Flask from werkzeug.security import generate_password_hash, check_password_hash app = Flask(__name__) password = 'abcde' password_hash = generate_password_hash(password) @app.route('/') def index(): res = check_password_hash(password_hash, 'wrong') return str(res)

Результат выполнения кода:

False

Пример

Давайте применим функцию в связке с login_user для аутентификации пользователя:

from flask import Flask, request, redirect, url_for from flask_login import LoginManager, UserMixin, login_user from werkzeug.security import generate_password_hash, check_password_hash app = Flask(__name__) app.secret_key = 'secret' login_manager = LoginManager(app) users = { 'user': { 'password_hash': generate_password_hash('abcde') } } class User(UserMixin): def __init__(self, username): self.id = username @login_manager.user_loader def load_user(user_id): return User(user_id) @app.route('/login', methods=['POST']) def login(): username = request.form['username'] password = request.form['password'] user_data = users.get(username) if user_data and check_password_hash(user_data['password_hash'], password): login_user(User(username)) return 'logged in' return 'invalid credentials'

Результат выполнения кода при верных данных:

logged in

Смотрите также

  • функцию generate_password_hash,
    которая создаёт хеш пароля
  • функцию login_user,
    которая выполняет вход пользователя
  • метод user_loader,
    который загружает пользователя по идентификатору
  • класс UserMixin,
    который добавляет стандартные методы пользователю
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить