繁体   English   中英

"页面加载前密码检查"

[英]Password check before page loads

我正在尝试制作一个网页,在页面加载之前要求用户输入密码提示。 输入正确的密码后,页面将继续加载。 如果输入的密码不正确,它将不断要求用户输入密码,直到他们正确为止。 该网页目前不要求输入密码并直接进入该页面。

HTML:

<html>
<head>
<title>Password Page</title>
<script type="text/javascript" src="password.js"></script>
</head>
<body onload="passwordCheck()">
<h1>How'd you know the password?</h1>
</body>
</html>

设置登录页面和目标页面。 登录页面应提示输入密码,如果正确,则将window.location更改为真实页面。

function passwordCheck(){
    var password = prompt("Please enter the password.");
    if (password==="ilikepie"){
        window.location="realpage.html";
    } else{
        while(password !=="ilikepie"){
            password = prompt("Please enter the password.");
        }
        window.location="realpage.html";
    }
}
window.onload=passwordCheck;

实际上,您可以摆脱该第一次检查,而仅使用while循环。 正如我们的老师所说,这样做是一项练习。

注意有关完全不提供任何安全性的注释。 这是不安全的,至少有两个原因。 首先,该密码对于任何了解“查看源代码”的人都是可见的。 第二个是,一旦知道realpage.html的URL, realpage.html可以绕过密码挑战直接导航到该URL。

我假设您是在做练习,现在您可以执行一些没有错误的操作,您将从中学习。 Web上最简单的有效密码协议是HTTP Basic Access Authentication 当您从本练习中学到了所有知识后,请阅读有关基本访问身份验证的信息。

由于未检查对话框的取消条件,以上代码段在while循环内创建了一个无限循环。 为了避免这种情况,需要进行如下更改:

function passwordCheck(){
    var password = prompt("Please enter the password.");
    if (password==="ilikepie"){
        window.location="realpage.html";
    } else if (password!='' && password!=null) {
        while(password !=="ilikepie"){
            password = prompt("Please enter the password.");
        }
        window.location="realpage.html";
    }
}
window.onload=passwordCheck;

如果密码正确,这只会询问您一次密码,否则它将继续询问。 这是递归函数。

window.onload=passwordCheck;
function passwordCheck()
{
    var password = prompt("Please enter the password.");
    if (password !== "bello")
    {
        passwordCheck();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM