在用户进行身份验证之前,如何阻止访问HTML页面?

时间:2016-02-29 01:37:43

标签: html security

我有一个HTML页面,用户可以访问Web API 2 Web服务来获取一些数据。此HTML页面不是MVC应用程序的一部分,而是一个独立的HTML页面,可以在任何Web服务器或本地操作系统上。

在用户获取数据之前,用户必须使用以下代码请求令牌:

function login()
{
    self.result = '';

    var loginData = {
        grant_type: 'password',
        username: document.getElementById("loginEmailTest").value,
        password: document.getElementById("loginPasswordTest").value
    };

    $.ajax({
        type: 'POST',
        url: 'https://localhost/token/Token',
        data: loginData
    }).done(function (data) {
        self.user = data.userName;
        // Cache the access token in session storage.
        sessionStorage.setItem(tokenKey, data.access_token);
    }).fail(showError);
}

如何阻止访问一组HTML页面,以便用户在加载页面之前必须拥有有效的令牌或登录详细信息?

javaScript可以通过简单的cookie或sessionStorage检查成功使用吗?

1 个答案:

答案 0 :(得分:0)

是肯定的。 requestHtml.php:

<?php
if(!isset($_POST['token'] || !is_valid_token($_POST['token'])){
header("HTTP/1.1 401 Unauthorized",true,401)
die("invalid token!");
}
$whitelist('foo.html','bar.html','baz.html');
if(!isset($_POST['html']) || !in_array($_POST['html'],$whitelist)){
header("HTTP/1.0 404 Not Found",true,404);
die("HTTP/1.0 404 Not Found");
}
readfile($_POST['html']);

并在javascript中,

function requestHtml(html){
var token=sessionStorage.getItem(tokenKey);
if(!token){
return false;//no token
}
var xhr=new XMLHttpRequest();
xhr.open("POST","requestHtml.php",false);
var fd=new FormData();
fd.append("token",token);
fd.append("html",html);
return xhr.send(fd);
}