javascript - location.replace() 不会替换页面

标签 javascript html logout

我第一次尝试在 html 页面之间进行转换。当我创建它们时,我一直在寻找replace和a 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() 函数。替换方法应该删除历史记录的顶部,但事实并非如此。有什么解决办法吗?非常感谢

最佳答案

你的逻辑有一个基本错误。受限区域页面只能在有效授权的情况下访问。

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

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

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

编辑:我在发布答案后看到了@scragar 评论,但我完全同意这一点,而不是OP的答案。如果您不想限制应用程序,则无需登录页面。如果您无论如何都可以访问受限区域,那么登录就变得完全没有意义

关于javascript - location.replace() 不会替换页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59771438/

相关文章:

javascript - 我如何确保 vuex 商店包含在我的构建中?

javascript - 根据值删除本地存储数组对象

javascript - Facebook、google 和 twitter 官方登录按钮在同一行且设计良好

Android Facebook 应用注销问题

ios - 如何使用 Parse 和 Swift 从 Facebook 注销或撤销登录

mysql - phpmyadmin 在 1440 秒后注销

javascript - 我从未在 JavaScript 中使用过 try catch

javascript - 我查找数组最大元素的算法的缺陷在哪里?

jquery - 使用 jQuery 将 accesskey 设置为键盘数字键盘键

jquery - 动态文本导致网页底部出现空白