Сеанс колбы не сохраняет данные между запросами api

#reactjs #flask #session #session-cookies

Вопрос:

Я действительно изо всех сил пытаюсь заставить сеанс работать должным образом для моего приложения React/Flask/Postgres. В приведенном ниже фрагменте кода идентификатор пользователя хранится в сеансе в маршруте входа в систему. Он хранится правильно и распечатывает идентификатор пользователя сеанса в следующей инструкции печати. Это не сохраняется между вызовами или даже функциями

Когда loadUser() вызывается при входе в систему, он не может найти идентификатор пользователя, сохраненный в сеансе.

 app = Flask(__name__)

SESSION_TYPE = "filesystem"
SECRET_KEY = os.getenv("SECRET_KEY")
app.config.from_object(__name__)
app.config['ENV'] = "development"
app.config['SESSION_COOKIE_SECURE'] = True
app.config['SESSION_COOKIE_SAMESITE'] = 'None'

Session(app)
# Set up some configurations for the app
cors = CORS(app, support_credentials=True, resources={
    r"/*": {
        "origins": "*"
    }
})

con = psycopg2.connect(
    dbname=DATABASE,
    user=DATABASE_USER,
    password=DATABASE_PASS,
    host="146.69.161.48",
    port="5432"
)

con.autocommit = True
cur = con.cursor()


@app.route("/api/login", methods=['POST'])
    @cross_origin(supports_credentials=True)
    def login():
        data = request.get_json()
        username = data['username']
        password = data['password']
        error = None

        cur.execute(
            sql.SQL(
                "SELECT * FROM UserInfo WHERE username = (%s);"),
            [username])
        user = cur.fetchone()

        if user is None:
            error = 'Incorrect username.'
        elif not check_password_hash(user[2], password):
            error = 'Incorrect password.'

        if error is None:
            session['user_id'] = user[0]
            loadUser()
            response = make_response(jsonify("User: "   str(session['user_id'])   " logged in."))
            response.headers.add('Access-Control-Allow-Headers',
                         "Origin, X-Requested-With, Content-Type, Accept, x-auth")
            return response
 

При запросе самого сеанса от React после входа в систему сеанс возвращает только объект с «_permanent» = true. Это, по крайней мере, показывает, что он успешно возвращает объект сеанса.

 @app.route("/api/getSession", methods=['GET'])
@cross_origin(supports_credentials=True)
def getSession():
    response = make_response(jsonify(session))
    response.headers.add('Access-Control-Allow-Headers',
        "Origin, X-Requested-With, Content-Type, Accept, x-auth")
    return response
 

Я могу видеть сохраненные файлы cookie сеанса в Postman, но не могу видеть файлы, сохраненные в Chrome/Firefox.

Запрос на реагирование:

   const handleSubmit = event => {
    event.preventDefault();
    console.log(email);
    console.log(password);
    let data = {"username": email, "password": password}

    axios
    .post("http://146.69.161.48:5000/api/login", data, {withCredentials: true})
    .then((response) => {
        console.log(response);
    })
    .catch((error) => {
      console.error("There was an error logging in", error);
    });
  };


  const getSession = event => {

    axios
    .get("http://146.69.161.48:5000/api/getSession", {withCredentials: true})
    .then((response) => {
        console.log(response);
    })
    .catch((error) => {
      console.error("There was an error. ", error);
    });
  };