我需要阻止显示我的 django 应用程序中以前的页面

I need to prevent showing previous pages from my django app

提问人: 提问时间:4/26/2023 更新时间:4/26/2023 访问量:43

问:

即使我注销后,我仍然能够看到我以前的页面,如何防止浏览器显示此内容? 我尝试了这段 JavaScript 代码。 注意:我使用了模板继承和静态导入的模板。

function preventBack() {
  history.pushState(null, null, location.href);
  window.onpopstate = function () {
      history.go(1);
      console.log("worked")
  };
}

window.onload = function() {
  preventBack();
  console.log("worked call ")
};

当我尝试这个“控制台显示有效调用”但“有效”尚未在控制台中打印时,这意味着 wins=down.onpopState 不起作用,导致此问题的原因是什么。我在 Django 中很安静,感觉就像我在这里被防水布一样!

Django 缓存 注销 pushstate

评论


答:

1赞 Abhishek 4/26/2023 #1

onpopstate 事件处理程序可能未被触发,因为你正在使用 Django 重定向函数注销用户。使用重定向时,浏览器会收到一个新 URL 并导航到该 URL,这会在浏览器的历史记录中创建一个新条目。这意味着,当用户单击后退按钮时,他们将返回上一页,即重定向前显示的页面。

为了防止这种情况,您可以修改 preventBack 函数,以便在推送新条目后也删除当前历史记录条目。这将确保历史记录中只有一个条目,即当前页面。下面是修改后的函数:

function preventBack() {
  history.pushState(null, null, location.href);
  window.onpopstate = function () {
      history.go(1);
  };
  window.history.pushState(null, "", window.location.href);
}