Изменить: проблема была устранена путем добавления «учетных данных: «include»» к сообщению о регистрации во внешнем интерфейсе.
Я работаю над проектом, который включает в себя Серверная часть flask и интерфейс next.js. Когда я регистрируюсь, он успешно создает пользователя в базе данных и должен перенаправить на индексную страницу, но сеанс входа в систему теряется после перенаправления. Я пробовал много чего, но пока ничего не помогло.
Это мой файл аутентификации:
На вкладке сети браузера после отправки запроса я вижу, что вызовы API успешны для регистрации и возвращают файл cookie сеанса. Когда он перенаправляется на домашнюю страницу, он пытается проверить состояние входа в систему, но строка if current_user.is_authenticated по какой-то причине всегда возвращает False.
Это файл инициализации, который создает приложение для серверной части flask:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
from datetime import timedelta
from flask_cors import CORS
db = SQLAlchemy()
bcrypt = Bcrypt()
login_manager = LoginManager()
def create_app():
app = Flask(__name__)
app.config['SECRET_KEY'] = 'XXXXXX'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
CORS(app, supports_credentials=True, origins=['http://localhost:3000', 'http://127.0.0.1:5000']) # Allow requests from your Next.js frontend
db.init_app(app)
bcrypt.init_app(app)
login_manager.init_app(app)
login_manager.login_view = 'auth.login'
from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint)
return app
Буду признателен за любую помощь. Я понятия не имею, что еще попробовать или почему пользователь возвращается как не аутентифицированный сразу после входа в систему. Я также заметил, что метод load_user по какой-то причине никогда не вызывается, хотя его должен вызывать метод login_user().< /п>
Изменить: проблема была устранена путем добавления «учетных данных: «include»» к сообщению о регистрации во внешнем интерфейсе. Я работаю над проектом, который включает в себя Серверная часть flask и интерфейс next.js. Когда я регистрируюсь, он успешно создает пользователя в базе данных и должен перенаправить на индексную страницу, но сеанс входа в систему теряется после перенаправления. Я пробовал много чего, но пока ничего не помогло. Это мой файл аутентификации: [code]from flask import Blueprint, render_template, redirect, url_for, request, flash, jsonify, session from flask_login import login_user, logout_user, current_user, login_required from .models import User from . import db, bcrypt, login_manager from flask_login import LoginManager
auth = Blueprint('auth', __name__)
@auth.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': email = request.form.get('email') password = request.form.get('password') user = User.query.filter_by(email=email).first() if user and bcrypt.check_password_hash(user.password, password): login_user(user) flash('Logged in successfully!', 'success') return jsonify({'message': 'User Successfully logged In', 'username': email}) else: flash('Login failed. Check your credentials.', 'danger') return jsonify({'message': 'None'})
# user_loader @login_manager.user_loader def load_user(user_id): print(f"Loading user with ID: {user_id}") return User.query.get(int(user_id)) [/code] А это моя лицевая страница: [code] import { useState, useEffect } from "react"; import styles from './SignUpForm.modules.css'
) } [/code] На вкладке сети браузера после отправки запроса я вижу, что вызовы API успешны для регистрации и возвращают файл cookie сеанса. Когда он перенаправляется на домашнюю страницу, он пытается проверить состояние входа в систему, но строка if current_user.is_authenticated по какой-то причине всегда возвращает False. Это файл инициализации, который создает приложение для серверной части flask: [code]from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_bcrypt import Bcrypt from flask_login import LoginManager from datetime import timedelta from flask_cors import CORS
db = SQLAlchemy() bcrypt = Bcrypt() login_manager = LoginManager()
from .auth import auth as auth_blueprint app.register_blueprint(auth_blueprint)
return app
[/code] Буду признателен за любую помощь. Я понятия не имею, что еще попробовать или почему пользователь возвращается как не аутентифицированный сразу после входа в систему. Я также заметил, что метод load_user по какой-то причине никогда не вызывается, хотя его должен вызывать метод login_user().< /п>