Пишу бэкенд для сайта на flask, но почему-то пропадает session, почему?

Ссылка скопирована
1 ответ

Есть некий код, в котором я login-ю пользователя, и добавляю его в сессию:

session['username'] = user[1]

но почему то потом, когда проверяю какая же инфа сохранилась в session

@app.route('/', methods=['GET']) def home():     response_object = {'status': 'success'}     response_object['message'] = session.get('username')       return jsonify(response_object)

@app.route('/', methods=['GET']) def home(): response_object = {'status': 'success'} response_object['message'] = session.get('username') return jsonify(response_object)

но на страницу flask-а выводиться {"message":null,"status":"success"} Помогите, в чем ошибка?

Дополнительно:

Это стандартные сессии на cookies или server-side на расширении flask-session?

  • Сергей Горностаев, server-side (from flask import session)
  • Lord_Kin, ваш импорт - это как раз client-side сессия на куках. Убедитесь, что клиент куки сохраняет и отправляет.
  • Сергей Горностаев, Очень был бы благодарен, если бы Вы предоставили ссылки на необходимый материал, к сожалению мне тяжело найти нечто стоящие самому, если можете, то объясните пожалуйста как убедиться в этом. Заранее спасибо!
  • Lord Kin, https://flask.palletsprojects.com/en/3.0.x/ Если клиентом выступает браузер, то открыть DevTools, посмотреть в соответствующие вкладки cookie, а на вкладке Network посмотреть, что принимается в http-ответах и передаётся в http-запросах. Если curl например, соответствующими ключами. Если код, то надо смотреть документацию к используемой в нём http-библиотеке.
  • Сергей Горностаев, хорошо, спасибо, напишу по результатам
  • Сергей Горностаев, чето у меня не находит куки, что делать?

    Пишу бэкенд для сайта на flask, но почему-то пропадает session, почему?

  • Пишу бэкенд для сайта на flask, но почему-то пропадает session, почему?

  • вот, что-то нашел
  • Lord Kin, посмотрите ещё заголовки запроса. Похоже, с Бэконом все нормально, ваш браузер просто не сохраняет куки.
  • Пишу бэкенд для сайта на flask, но почему-то пропадает session, почему?

    - я слегка не понимаю, куда тыкать?)

  • Пишу бэкенд для сайта на flask, но почему-то пропадает session, почему?

  • Сергей Горностаев, вот
  • Lord Kin, ваш браузер почему-то не сохраняет куки. Проблема в этом.
  • Сергей Горностаев, а как это исправить?
  • Сергей Горностаев, а нужно ли объявлять cookie через import flask...?
  • Lord Kin, исправлять надо на стороне клиента, как я уже сказал, с кодом Python всё в порядке. Ну и держать в голове, что у среднего web-приложения тысячи клиентов, львиная доля которых знает, как такую проблему исправлять , не больше вашего.
  • Сергей Горностаев, могут ли быть проблемы с session из-за написания фронтенда на фреймворке vue (мы проверяли работу session без vue и все отрабатывало отлично)
  • Lord Kin, судя по выдаче Google на запрос "Vue cookie", может.
  • Сергей Горностаев, а можете помочь подробнее, я понимаю, что наверно не очень правильно беспокоить, но мы уже давно не можем решить эту проблему
  • Lord Kin, я не фронтендер, рецепта решения проблемы на фронте дать не смогу при всём желании. Но я вбил в Google запрос "vue cookie" и получил кучу результатов о том, как такую проблему люди решали. Уверен, вы сможете это повторить.
  • , а Вы на 100% уверены, что проблема именно на frontend-е, просто vue cookie - это плагин для написания бэкенда, тут, по идее, он не причем?
  • Сергей Горностаев,
  • Lord Kin,

    а Вы на 100% уверены, что проблема именно на frontend-е

    Я на 100% уверен только, что дефолтная реализация сессий во Flask сделана на cookie, поэтому проверять надо с клиентской стороны. Ну и судя по этому

    мы проверяли работу session без vue и все отрабатывало отлично

    проблема именно во фронте.

    просто vue cookie - это плагин для написания бэкенда, тут, по идее, он не причем?

    Так я и не про плагин.

  • Сергей Горностаев, спасибо, а про что Вы?)
  • Lord Kin, я про огромное количество статей и вопросов "как работать с cookie в vue", которые вываливаются по поисковому запросу "vue cookie". И кстати, я погуглил, плагин вполне себе фронтовый, не понимаю, где вы там бэкенд увидели.
  • Сергей Горностаев, хм, значит плохо читал, спасибо за ответ)
  • Сергей Горностаев, я вроде бы все починил, проблема была в cors, теперь session отображается в куки-файлах клиента, но при этом session.get('id'), вес время возвращает мне None, я устанавливал `app.config['SESSION_TYPE'] = 'filesystem'`.
  • я вроде правильно, как надо, устанавливал сессию `session['id']=id_s`, но при этом в декораторе, в котором я ее объявляю, он возвращает id, а вот в другом декораторе - None
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

    Для того чтобы понять, почему пропадает сессия в вашем Flask приложении, следует рассмотреть несколько возможных причин:

    1. Неправильная настройка секретного ключа: Flask использует секретный ключ для подписи и шифрования данных сессии. Если секретный ключ изменяется каждый раз при перезапуске приложения, то сессия будет теряться. Убедитесь, что вы устанавливаете секретный ключ в конфигурации приложения и не изменяете его.

    app = Flask(__name__)
    app.secret_key = 'your_secret_key'

    app = Flask(__name__) app.secret_key = 'your_secret_key'

    2. Неправильная конфигурация кэширования: Если вы используете какой-то вид кэширования (например, встроенный кэш Flask или кэш Redis), убедитесь, что кэш не замещает данные сессии. Проверьте настройки кэширования и убедитесь, что сессионные данные не сохраняются там.

    3. Проблемы с браузером или сетью: Иногда сессия может теряться из-за проблем с браузером или сетью. Убедитесь, что у вас нет блокировщиков рекламы или сторонних расширений, которые могут вмешиваться в передачу данных сессии.

    4. Неправильная настройка сессии: Проверьте, что вы правильно настраиваете сессию в вашем приложении Flask. Убедитесь, что вы используете правильные методы для установки и получения данных сессии.

    from flask import session
     
    # Установка данных сессии
    session['key'] = 'value'
     
    # Получение данных сессии
    value = session.get('key')

    from flask import session # Установка данных сессии session['key'] = 'value' # Получение данных сессии value = session.get('key')

    Если после проведения всех этих проверок проблема с пропаданием сессии все еще остается, попробуйте создать минимальный пример кода, который воспроизводит проблему, и опубликуйте его на форуме сообщества Flask для получения дополнительной помощи.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно