2016-02-29 77 views
0

我有一個HTML頁面,用戶可以訪問Web API 2 Web服務來獲取一些數據。這個HTML頁面不是MVC應用程序的一部分,而是一個獨立的HTML頁面,可以在任何Web服務器或本地操作系統上使用。如何在用戶通過身份驗證之前阻止訪問HTML頁面?

之前,用戶可以得到的數據,用戶有權要求令牌下面的代碼:

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頁面,使得用戶必須有頁面加載之前有效的令牌或登錄詳細信息?

可以通過簡單的cookie或sessionStorage檢查成功使用javaScript嗎?

+0

可能重複http://stackoverflow.com/questions/33992971/setting-up-a-log-in-for- a-website-using-php/33995665? – hanshenrik

回答

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); 
} 
+0

是否可以在不使用PHP的情況下執行上述操作? – user3736648

+0

@ user3736648你可以使用任何支持TCP的語言。PHP是迄今爲止最流行的語言。其他流行的替代品是JavaScript(NodeJS),Python,Ruby,ASP(IIS) – hanshenrik

+1

沒有任何東西阻止你抓取masm和winapi手冊的副本,並且在彙編中編寫服務器。引用masm32.com:不是因爲心裏暗淡。如果MASM超出了你的範圍,請採取服務器端腳本。 – hanshenrik

相關問題