Данные сеанса Flask не сохраняются между сеансамиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Данные сеанса Flask не сохраняются между сеансами

Сообщение Anonymous »

Я создаю этот веб-сайт, используя React и Python с Flask. Данные сеанса теряются между сеансами, и я не знаю, почему.
Это конфигурация приложения на Python в файле app.py:

Код: Выделить всё

app = Flask(__name__)
app.config['SECRET_KEY'] = secrets.token_hex(16)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost/agentie_imobiliara'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
app.config['SESSION_COOKIE_SECURE'] = False
app.config['SESSION_TYPE'] = 'filesystem'
app.permanent_session_lifetime = timedelta(days=7)
app.config['SESSION_COOKIE_HTTPONLY'] = True
app.config['SESSION_COOKIE_SAMESITE'] = "None"
app.config['SESSION_COOKIE_NAME'] = 'session'
CORS(app, origins='*', supports_credentials=True)
Session(app)

if __name__ == '__main__':
app.run()
А это функции login() и get_user_role() в файле Routes.py:

Код: Выделить всё

@app.route('/login', methods=['POST'])
def login():
try:
email = request.json['email']
password = request.json['password']
user = User.query.filter_by(email=email).first()

if user and user.password == password:
session['user_id'] = user.id
session['user_email'] = user.email
session['user_role'] = user.role
session.modified = True
session.permanent = True
return jsonify({'message': 'Login successful', 'user_id': user.id,
'user_email': user.email, 'user_role': user.role})
else:
return jsonify({'message': 'Invalid email or password'})
except Exception as e:
print(f"Error: {e}")
return jsonify({'message': 'An error occurred'})

@app.route('/user_role', methods=['GET'])
def get_user_role():
print(f"Session contents: {session}")
if 'user_role' in session:
user_role = session.get('user_role')
return jsonify({'user_role': user_role})
else:
return jsonify({'message': 'User not logged in'})
Это код React, в котором я получаю API входа:

Код: Выделить всё

const handleSubmit = async (event) => {
event.preventDefault();
try {
const response = await axios.post(
"http://127.0.0.1:5000/login",

{ email: email, password: password },
{
headers: {
"Content-Type": "application/json",
},
}
);
alert(response.data.message);
if (response.status === 200 && response.data.message === "Login successful") {
onLoginSuccess(true);
setIsLoggedIn(true);
history.push('/');
console.log("isLoggedIn:", isLoggedIn);
console.log("onLoginSuccess:", onLoginSuccess);

}
} catch (error) {
alert("Invalid email or password");
}
};
и здесь я получаю API get_user_role:

Код: Выделить всё

useEffect(() => {
// Fetch the user's role from the API
fetch('http://127.0.0.1:5000/user_role', { credentials: 'include' })
.then(response => response.json())
.then(data => setRole(data.role))
.catch(error => console.error(error));
}, []);
Я пытался поместить разные инструкции печати в внутренний код для печати содержимого сеанса, но между запросами он становится пустым. Мне нужен get_user_role для отображения разных страниц в зависимости от роли. Я не знаю, в чем проблема.

Подробнее здесь: https://stackoverflow.com/questions/760 ... n-sessions
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»