我已经找到解释如何生成令牌以及如何使用它的链接/答案,如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