页面加载前的密码检查

时间:2014-09-20 21:49:14

标签: javascript html

我正在尝试创建一个网页,在页面加载之前要求用户输入密码。输入正确的密码后,页面将继续加载。如果键入的密码不正确,它将继续询问用户密码,直到他们正确。该网页目前不会要求输入密码并直接进入该页面。

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>

JavaScript的:

// Password: ilikepie
function passwordCheck(){
var password = prompt("Please enter the password.");

if (password.value=="ilikepie"){
window.alert("Password correct!");
else{
while(password.value !="ilikepie"){
window.alert(password);}

2 个答案:

答案 0 :(得分:2)

设置登录页面和目标页面。登录页面应提示输入密码,如果正确,请将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循环。正如我们的老师所说,这样做是为了锻炼。

注意关于此的评论,根本不提供任何安全性。 (至少)有两个原因导致这不安全。首先,任何知道&#34;查看来源的人都可以看到密码。&#34;第二个是,一旦知道realpage.html的URL,就可以直接导航到它,绕过密码质询。

我认为你这样做是为了练习,现在你有一些没有错误执行的东西,你将从中学习。最简单的网络有效密码协议是HTTP Basic Access Authentication。当您从本练习中学到所有知识后,请阅读有关基本访问身份验证的内容。

答案 1 :(得分:0)

由于未检查对话框的取消条件,上述代码段在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;