Я работаю над приложением Flask, которое развернуто на heroku.
Приложение использует Flask-Session Мне нужна помощь, чтобы правильно настроить хранилище сеансов на стороне сервера.
I 'Сначала мы настроили его для хранения сеансов на стороне сервера с помощью конфигурации Flask-Session = "SESSION_FILE_DIR" = mkdtemp ().Тем не менее, Heroku в этом случае не работает должным образом на этом пути.Heroku не будет хранить сессии, и пользователь просто выйдет из системы случайно.Я видел рекомендации по хранению сессий в базе данных, а не во временной папке сервера.
Я попытался перейти к хранилищу базы данных для сессий, используя "SESSION_TYPE" = "sqlalchemy".Я еще не смог запустить это правильно, чтобы работать с locahost.
Следовал этому Как сохранить сеансы в базе данных Postgres? тоже, но безуспешно ...
"""application.py"""
import os, datetime
from tempfile import mkdtemp
from werkzeug.exceptions import default_exceptions, HTTPException, InternalServerError
from werkzeug.security import check_password_hash, generate_password_hash
from flask import Flask, flash, jsonify, redirect, render_template, request, session
from flask_session import Session
# Import my package modules
from helpers import apology, login_required, status_mapper
from class_h import *
# Configure application
app = Flask(__name__)
# Ensure responses aren't cached
@app.after_request
def after_request(response):
response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
response.headers["Expires"] = 0
response.headers["Pragma"] = "no-cache"
return response
Исходная конфигурация сеанса ->
# # Configure session to use filesystem (instead of signed cookies)
# app.config["SESSION_FILE_DIR"] = mkdtemp()
# app.config["SESSION_PERMANENT"] = False
# app.config["SESSION_TYPE"] = "filesystem"
# Session(app)
Мой файл модели class_h.py, импортированный в основной файл, создает экземпляр db, который инициализируется в application.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# create a db but using flask_sqlalchemy syntax
db = SQLAlchemy()
Конфигурация Flask-SQLAlchemy, база данных Heroku Postgres
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URL")
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)
Настроить flask_session для использования SQLAlchemy (вместо подписанных файлов cookie)
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "sqlalchemy"
Session(app)
После того, как я применил [это исправление] (https://github.com/mnbf9rca/flask-session/commit/9ad4b23e946beba1fdbd23dc406058a77dac6676) к поведению файла sessions.py таков, что запись сеанса не создается в базе данных. Если исправление не применяется, сеанс создается со значением None.
пробуется с
from flask_sessionstore import Session
но я получаю то же поведение.
пробовал с:
["SESSION_PERMANENT"] = True
Сессия создается с истечением Null (а не создается).
I 'Буду признателен за вашу помощь! потратил дни копаться в этом.