注销后如何禁用浏览器的“后退”按钮?
我在用Python和Django开发,想让用户在注销后点击返回按钮时,自动跳转到登录页面。请问该怎么做?代码应该写在哪里呢?
为了测试Django后台是否能处理这个问题,我先登录了Django后台,然后注销,再点击返回按钮,结果能看到之前的页面。为什么Django后台不处理这个情况呢?
这是Django后台注销的代码:
def logout(request):
"""
Removes the authenticated user's ID from the request and flushes their
session data.
"""
request.session.flush()
if hasattr(request, 'user'):
from django.contrib.auth.models import AnonymousUser
request.user = AnonymousUser()
7 个回答
2
你在登出后还能看到管理页面,是因为你并不是在看真正的页面,而是在浏览器的缓存中看到它的一个副本。
试试这个:
- 访问任何管理页面
- 点击“登出”按钮
- 在浏览器中点击“后退”按钮
- 按F5键或者点击浏览器中的“刷新”按钮。
现在你会被重定向到管理后台的登录页面。
9
你可能会发现,在Chrome浏览器中使用@cache_control(no_cache=True, must_revalidate=True, no_store=True)可以完全阻止用户通过后退按钮查看之前的页面。
这里最重要的是no_store这个设置,因为我在这里发现了这个信息 1
15
最后找到了解决办法:
from django.views.decorators.cache import cache_control
@cache_control(no_cache=True, must_revalidate=True)
def func()
#some code
return
这样做会强制浏览器向服务器发送请求。