location.replace()不会替换页面

问题描述 投票:0回答:2

我第一次尝试在html页面之间进行转换。当我创建替换和href时,我一直在寻找它们之间的区别,因此我选择了第二个。我正在建立一个登出按钮。因此,当我单击它时,我需要重定向到登录页面。但是,我还需要使用户无法使用后退按钮导航回首页(从登录名)。因此,在我的home.js文件中,我写道(我正在使用Firebase):

const disconnettitiButton = document.getElementById("disconnettiti");
disconnettitiButton.addEventListener('click', () => {
      firebase.auth().signOut().then(function() {
        // Sign-out successful.
        window.location.replace("../index.html");
      }).catch(function(error) {
        // An error happened.
      });
    });

虽然这是与按钮相对应的html(实际上不是按钮...)

 <a class="nav-link" href="#" id="disconnettiti">Disconnettiti<span class="sr-only"></span></a>

问题是:window.location.replace()成功更改了页面并返回到登录表单。但是,当我单击“后退”按钮时,我也可以返回主页,在此我调用了.replace()函数。 replace方法应删除历史记录的顶部,但实际情况并非如此。有什么办法吗?非常感谢

javascript html logout
2个回答
0
投票

我认为您需要提供完整的网址,而不是提供相对路径。因此,如果要从端口3000的localhost提供页面,并且index.html位于根目录,则应将路径指定为http://localhost/index.html

此外,您的脚本必须抛出错误。如果不起作用,则应首先检查浏览器控制台。

希望有帮助:)


0
投票

您的逻辑中存在一个基本错误。限制区域页面只能通过有效的授权才能访问。

这些授权应在用户注销时删除。因此,即使您按下“后退”按钮,您也不再有授予权限,您将被重定向到登录页面。如果您尝试在限制区域中指向特定的网址,也会发生同样的情况。

例如,您可以使用在登录/注销时设置/取消设置的Cookie,也可以使用会话。在限制区域的每个页面上,您都需要在开始时检查cookie的存在,否则请进行重定向。

如果注销后您仍然可以看到限制区域内的内容,但是您的应用程序工作有问题(但是您没有提供代码来检查)

© www.soinside.com 2019 - 2024. All rights reserved.