注销后如何禁用浏览器的“后退”按钮?

6 投票
7 回答
17420 浏览
提问于 2025-04-16 22:46

我在用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

你在登出后还能看到管理页面,是因为你并不是在看真正的页面,而是在浏览器的缓存中看到它的一个副本

试试这个:

  1. 访问任何管理页面
  2. 点击“登出”按钮
  3. 在浏览器中点击“后退”按钮
  4. 按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

这样做会强制浏览器向服务器发送请求。

撰写回答