我正在为移动应用程序开发带有PHP3蛋糕的REST API。
每个请求标头都有针对验证移动应用的自定义参数调用X-App-Key
。 (应用的唯一ID - X-App-Key:' 123456789')
我需要在访问API端点之前检查该参数值。
如何从bootstrap.php
或任何其他地方进行检查。 (在控制者中)。
这可以使用cakephp Dispatcher Filters
进行验证和过滤请求吗?
答案 0 :(得分:1)
是Dispatch Filters
这是一个不错的选择。如果您的应用程序也将提供浏览器请求,那么控制器会更好。对于Dispatch Filters,您可以这样做:
1)config \ bootstrap.php
DispatcherFactory::add('ApiHeader');
2)src \ Routing \ Filter \ ApiHeaderFilter.php
namespace App\Routing\Filter;
use Cake\Event\Event;
use Cake\Routing\DispatcherFilter;
class ApiHeaderFilter extends DispatcherFilter
{
public function beforeDispatch(Event $event)
{
$request = $event->data['request'];
$xAppKey = $request->header('X-App-Key');
if ($xAppKey != '123456789') {
// throw exception or message
exit;
}
}
}
您还可以使用TableRegistery
进行数据库查询:
use Cake\ORM\TableRegistry;
...
$tableModel = TableRegistry::get('table_name');
$xAppKeys = $tableModel->find('all', ...
参考链接: Request Headers& Dispatch Filters