我第一次尝试在 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/