- Проверил, что SQL-запрос извлекает правильный пароль_хеш из базы данных, добавив отладочные операторы печати.
- Подтверждено, что функция bcrypt.checkpw() сравнивает введенный пароль с сохраненным хешем.
- Проверены журналы на наличие дополнительной информации об ошибках и проверено соединение с базой данных. .
from flask import Flask, request, jsonify
from flask_cors import CORS
import psycopg2
import bcrypt
app = Flask(__name__)
CORS(app)
# Database connection details
DATABASE = {
'dbname': 'blacklist_db',
'user': 'postgres',
'password': 'Project31$', # Use your own password
'host': 'localhost',
'port': '5432'
}
# Function to connect to the database
def connect_db():
try:
conn = psycopg2.connect(
dbname=DATABASE['dbname'],
user=DATABASE['user'],
password=DATABASE['password'],
host=DATABASE['host'],
port=DATABASE['port']
)
return conn
except Exception as e:
print(f"Database connection error: {e}")
return None
# Login route with debug print statements
@app.route('/login', methods=['POST'])
def login():
data = request.json
email = data.get('email')
password = data.get('password')
print(f"Email: {email}, Password: {password}") # Debugging output
conn = connect_db()
if conn is None:
return jsonify({'message': 'Database connection error'}), 500
try:
cursor = conn.cursor()
query = "SELECT password_hash FROM Masters WHERE email = %s"
cursor.execute(query, (email,))
user = cursor.fetchone()
print("Fetched user:", user) # Added debug information
if user and user[0] is not None:
if bcrypt.checkpw(password.encode('utf-8'), user[0]):
return jsonify({'message': 'Login successful'}), 200
else:
return jsonify({'message': 'Incorrect email or password'}), 401
else:
return jsonify({'message': 'Incorrect email or password'}), 401
except Exception as e:
print(f"Query execution error: {e}")
return jsonify({'message': 'Login error'}), 500
finally:
cursor.close()
conn.close()
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-error-re
Мобильная версия