我已經找到解釋如何生成令牌以及如何使用它的鏈接/答案,如this。PHP - Smarty - Http請求攔截器
我的網站使用Smarty,並有很多已經存在的表單。我試圖找到一種方法在每個請求的頭部中發送一個令牌,並捕獲所有請求以驗證頭部。
如:在AngularJS,我可以使用$httpProvider.interceptors
和headers['Authorization'] = 'Bearer ' + token;
我想創建這樣的
class Interceptor {
$token;
function __construct(type) {
switch (type) {
case 'beforeSending':
$token = md5(uniqid(rand(), TRUE));
$_SESSION['token'] = $token;
$_SERVER['HTTP_authorization'] = 'Bearer ' + $token;
break;
case 'beforeExecuting':
if(hash_equals($_SESSION['token'], $_POST['token'])){
//continue
}else{
//error redirect to homePage or logout
}
break;
}
}
}
這應該存儲在會話令牌添加到每頭請求。
這也應該檢查每個請求是否包含正確的標記。
有沒有辦法在全球範圍內實現這一目標,而不是將輸入添加到每個表單並檢查每個調用?
只需指定一個會話變量,並檢查需要驗證的頁面上的會話變量? – junkfoodjunkie
我在用戶登錄時創建令牌,並將令牌存儲爲會話變量。現在有沒有辦法在全球範圍內爲每個POST檢查這個令牌?而不是將代碼添加到每個頁面? – Weedoze
不需要。您需要爲每個處理文件添加會話檢查。 – junkfoodjunkie