Расширение флеш-сессии и сеанс по умолчанию

Я использую:

from flask import session

@app.route('/')
def main_page():
    if session.get('key'):
        print ("session exist" + session.get('key'))
    else:
        print ("could not find session")
        session['key'] = '34544646###########'
    return render_template('index.html')

У меня нет установленного расширения Flask-Session, но это все еще работает нормально. Я пытаюсь понять, почему и когда это расширение распространяется на меня. Насколько я вижу, сеанс по умолчанию работает хорошо для меня.

Ответы

Ответ 1

Разница заключается в том, где хранятся данные сеанса.

Кол-во сеансов - это сеансы на стороне клиента. Любые данные, которые вы пишете на сеанс, записываются в файл cookie и отправляются клиенту для хранения. Клиент будет отправлять cookie обратно на сервер с каждым запросом, таким образом данные, которые вы пишете в сеансе, остаются доступными в последующих запросах. Данные, хранящиеся в файле cookie, криптографически подписаны, чтобы предотвратить любое вмешательство. Параметр SECRET_KEY из вашей конфигурации используется для генерации подписи, поэтому данные на ваших клиентских сеансах безопасны, пока ваш секретный ключ остается конфиденциальным. Обратите внимание: безопасность в этом контексте означает, что данные в сеансе не могут быть изменены потенциальным злоумышленником. Данные все еще видны любому, кто знает, как выглядеть, поэтому вам никогда не следует писать конфиденциальную информацию в сеансе на стороне клиента.

Flask-Session и Flask-KVSession - это два расширения для Flask, которые реализуют сеансы на стороне сервера. Эти сеансы работают точно так же, как родные сеансы Flask с точки зрения вашего приложения, но они хранят данные на сервере. Данные никогда не отправляются клиенту, поэтому есть немного повышенная безопасность. Клиент все еще получает подписанный файл cookie, но единственными данными в файле cookie является идентификатор сеанса, который ссылается на индекс файла или базы данных на сервере, на котором хранятся данные.