Cake PHP3验证rest API头参数

时间:2016-07-04 06:53:32

标签: php rest cakephp cakephp-3.0

我正在为移动应用程序开发带有PHP3蛋糕的REST API。 每个请求标头都有针对验证移动应用的自定义参数调用X-App-Key。 (应用的唯一ID - X-App-Key:' 123456789')

我需要在访问API端点之前检查该参数值。 如何从bootstrap.php或任何其他地方进行检查。 (在控制者中)。

这可以使用cakephp Dispatcher Filters进行验证和过滤请求吗?

1 个答案:

答案 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