首页 文章

Cake PHP3验证rest API头参数

提问于
浏览
0

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

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

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

1 回答

  • 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 HeadersDispatch Filters

相关问题