我有一个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检查成功使用吗?
答案 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);
}