我正在为移动应用程序开发带有PHP3蛋糕的REST API . 每个请求标头都有自定义参数调用 X-App-Key 用于验证移动应用程序 . (应用程序的唯一ID - X-App-Key:'123456789')
X-App-Key
我需要在访问API endpoints 之前检查该参数值 . 如何从 bootstrap.php 或任何其他地方检查 . (在控制器中) .
bootstrap.php
这可以使用cakephp Dispatcher Filters 进行验证和过滤请求吗?
Dispatcher Filters
是 Dispatch Filters 在这里是一个不错的选择 . 如果您的应用程序也将提供浏览器请求,那么控制器会更好 . 对于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 进行数据库查询:
TableRegistery
use Cake\ORM\TableRegistry; ... $tableModel = TableRegistry::get('table_name'); $xAppKeys = $tableModel->find('all', ...
参考链接:Request Headers&Dispatch Filters
1 回答
是
Dispatch Filters
在这里是一个不错的选择 . 如果您的应用程序也将提供浏览器请求,那么控制器会更好 . 对于Dispatch Filters,您可以这样做:1)config \ bootstrap.php
2)src \ Routing \ Filter \ ApiHeaderFilter.php
您还可以使用
TableRegistery
进行数据库查询:参考链接:Request Headers&Dispatch Filters