配置PHP API中间件的API Key认证遇到问题求助
解决php-crud-api的API Key认证配置问题
问题根源
你的配置里apiKeyAuth.keys使用了字符串值,但该参数要求是数组类型——哪怕只有一个API Key,也需要用数组包裹。另外需确认请求时API Key的传递方式是否符合组件默认规则。
修正后的配置代码
$config = new Config([ 'driver' => 'mysql', 'address' => 'localhost', 'port' => 'PORT_NUMBER', 'username' => 'DATABSE_USERNAME', 'password' => 'DATABSE_PASS', 'database' => 'DATABASE_NAME', 'debug' => true, 'tables' => 'TABLES_ALLOWED', 'middlewares' => 'apiKeyAuth', 'apiKeyAuth.keys' => ['MY_API_KEY'], // 改为数组格式 ]);
请求时的正确传递方式
默认情况下,组件会从以下位置读取API Key:
- HTTP请求头:
X-API-Key - URL查询参数:
apiKey - 请求体参数:
apiKey
用Postman测试时,推荐在Headers标签添加键值对:
- 键:
X-API-Key - 值:
MY_API_KEY
额外排查点
- 确保
MY_API_KEY没有包含特殊字符或空格,复制时不要带多余符号 - 如果需要自定义API Key的读取位置,可配置
apiKeyAuth.header、apiKeyAuth.param等参数调整规则
内容的提问来源于stack exchange,提问作者Mike Barbaro
相关产品推荐
相关产品推荐

