在Python Flask-login中禁用会话Cookie生成

时间:2018-05-03 19:22:33

标签: python flask flask-login

在搜索Python Flask-Login之后,我找到了利用header / api-key身份验证而不是默认cookie身份验证的方法。 https://flask-login.readthedocs.io/en/latest/#disabling-session-cookie-for-apis

但是,在初始/请求中,Flask仍会在会话中使用cookie进行响应。上述方法仅确保任何新请求(@login_required)能够在没有cookie的情况下进行身份验证(并使用标头或我的实现所需的任何方法)。

有没有办法禁用它?或者我错过了什么。

1 个答案:

答案 0 :(得分:2)

找到了办法。创建了一个'CustomSessionInterface'并对其进行了配置。

app = Flask(__name__)

app.config.update(
    DEBUG = True,
    SECRET_KEY = 'secret_xxx'
)

@user_loaded_from_header.connect
def user_loaded_from_header(self, user=None):
    g.login_via_header = True

class CustomSessionInterface(SecureCookieSessionInterface):
    """Disable default cookie generation."""
    def should_set_cookie(self, *args, **kwargs):
        return False

    """Prevent creating session from API requests."""
    def save_session(self, *args, **kwargs):
        if g.get('login_via_header'):
            print("Custom session login via header")
            return
        return super(CustomSessionInterface, self).save_session(*args,
                                                                **kwargs)

app.session_interface = CustomSessionInterface()

login_manager = LoginManager()
login_manager.init_app(app)

should_set_cookie()应该返回False。