Flask-后退按钮即使退出后也返回会话

use*_*362 2 flask

我正在使用flask创建一个需要登录和注销的网站。我正在使用Flask-Security来解决这个问题。我的问题是,注销后,如果单击“后退”按钮,则会返回到用户页面。是否可以通过按Flask中的“后退”按钮来防止注销后返回会话?

Mig*_*uel 5

如果我点击后退按钮,我将返回到用户页面

这实际上是一个不正确的说法。

当用户导航时,Web 浏览器在本地缓存页面。如果用户注销然后点击后退按钮,将显示页面的缓存版本。用户不会返回用户会话,用户会话仍然关闭。

您必须欺骗浏览器以避免这种行为,这可能很难。例如,如果您的页面仅包含基本布局,然后当您点击后退按钮时通过 ajax 请求所有内容,ajax 将发现服务器中没有用户会话并且不会显示任何内容。


Wae*_*zar 5

您可以通过Cache-Control在每个响应后添加标头来告诉浏览器不要缓存任何页面。如果只希望对此做出某些响应,则可以将其添加到特定视图中。

# Ensure responses aren't cached
@app.after_request
def after_request(response):
    response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
    return response
Run Code Online (Sandbox Code Playgroud)


use*_*362 2

使用Cache-Control标头来防止页面被缓存。

response.headers.add('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0')   
Run Code Online (Sandbox Code Playgroud)