php - Yii2 Invalid Configuration, cookieValidationKey 访问API时必须配置秘钥错误
问题描述
每当我尝试访问我自己编写的 API 时都会遇到错误。
{ "name": "无效配置", "message": "yii\web\Request::cookieValidationKey 必须配置密钥。", "code": 0, "type": "yii\base\InvalidConfigException" , "file": "F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\Request.php", "line": 1669, "stack-trace": [ "#0 F:\xampp \htdocs\inventory-web\vendor\yiisoft\yii2\web\Request.php(1651): yii\web\Request->loadCookies()", "#1 F:\xampp\htdocs\inventory-web\vendor\ yiisoft\yii2\web\Request.php(1739): yii\web\Request->getCookies()", "#2 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\Request.php (1721): yii\web\Request->loadCsrfToken()", "#3 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\User.php(279): yii\web\Request->getCsrfToken(true)", "#4 F:\xampp\htdocs\inventory-web \vendor\yiisoft\yii2\web\User.php(261): yii\web\User->regenerateCsrfToken()", "#5 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\ User.php(299): yii\web\User->login(Object(common\models\User))", "#6 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\filters\auth \HttpHeaderAuth.php(62): yii\web\User->loginByAccessToken('aa9d0c9e05a7f35...', 'yii\\filters\\aut...')", "#7 F:\xampp\htdocs\inventory -web\vendor\yiisoft\yii2\filters\auth\AuthMethod.php(59): yii\filters\auth\HttpHeaderAuth->authenticate(Object(yii\web\User), Object(yii\web\Request), Object (yii\web\Response))", "#8 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\ActionFilter.php(77): yii\filters\auth\AuthMethod->beforeAction(Object(yii\base\InlineAction))", "#9 [内部函数]: yii\base\ActionFilter->beforeFilter(Object(yii\base\ActionEvent))", "#10 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Component.php( 627): call_user_func(Array, Object(yii\base\ActionEvent))", "#11 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Controller.php(276): yii\base \Component->trigger('beforeAction', Object(yii\base\ActionEvent))", "#12 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\Controller.php(185): yii\base\Controller->beforeAction(Object(yii\base\InlineAction))", "#13 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Controller.php(155): yii\web\Controller->beforeAction(Object(yii\base\InlineAction))", "#14 F:\ xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction('refdatajson', Array)", "#15 F:\xampp\htdocs\ inventory-web\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('v1/survey/refda...', Array)", "#16 F:\xampp \htdocs\inventory-web\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))", "#17 F:\xampp\ htdocs\inventory-web\api\web\index.php(35): yii\base\Application->run()", "#18 {main}" ] }beforeAction(Object(yii\base\InlineAction))", "#14 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction ('refdatajson', Array)", "#15 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('v1/ Survey/refda...', Array)", "#16 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest( Object(yii\web\Request))", "#17 F:\xampp\htdocs\inventory-web\api\web\index.php(35): yii\base\Application->run()", "# 18 {主}"] }beforeAction(Object(yii\base\InlineAction))", "#14 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Module.php(528): yii\base\Controller->runAction ('refdatajson', Array)", "#15 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('v1/ Survey/refda...', Array)", "#16 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest( Object(yii\web\Request))", "#17 F:\xampp\htdocs\inventory-web\api\web\index.php(35): yii\base\Application->run()", "# 18 {主}"] }yii\base\Controller->runAction('refdatajson', Array)", "#15 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\Application.php(103): yii\base\ Module->runAction('v1/survey/refda...', Array)", "#16 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Application.php(386): yii \web\Application->handleRequest(Object(yii\web\Request))", "#17 F:\xampp\htdocs\inventory-web\api\web\index.php(35): yii\base\Application- >run()", "#18 {main}" ] }yii\base\Controller->runAction('refdatajson', Array)", "#15 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\web\Application.php(103): yii\base\ Module->runAction('v1/survey/refda...', Array)", "#16 F:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Application.php(386): yii \web\Application->handleRequest(Object(yii\web\Request))", "#17 F:\xampp\htdocs\inventory-web\api\web\index.php(35): yii\base\Application- >run()", "#18 {main}" ] }\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))", "#17 F:\ xampp\htdocs\inventory-web\api\web\index.php(35): yii\base\Application->run()", "#18 {main}" ] }\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))", "#17 F:\ xampp\htdocs\inventory-web\api\web\index.php(35): yii\base\Application->run()", "#18 {main}" ] }
我已经详细研究了这个问题,并在我的config/main.php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php'),
require(__DIR__ .'/main-local.php')
);
'components' => [
'request' => [
'enableCookieValidation' => false,
'enableCsrfValidation' => false,
],
'request' => [
'enableCookieValidation' => false,// also set it to true
'enableCsrfValidation' => false, // also set it to true
],
在/config/main-local.php
我有以下
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'someRandomKey',
],
],
它不适合我。任何帮助将不胜感激。
解决方案
从 中删除request
组件,common/config/main-local.php
然后将其保留在frontend/config/main-local.php
.
然后在您的api/config/main.php
下方添加以下内容components
以关闭 API 的 cookie 验证。
'components' => [
'request' => [
'enableCookieValidation' => false,
'enableCsrfValidation' => false,
],
推荐阅读
- angular - Angular:以模块化方式在另一个组件之前添加一个组件
- c# - ASP.NET Core 获得部分经过身份验证的用户(即正确的用户名 + 密码,但尚未 2FA)
- ios - 从 JSON 中获取多个字符串
- html - 在 Redoc 侧边菜单中有 Schemas
- android - DriveServiceHelper 无法转换为 Parcelable
- python - 为什么在传递递减值的列表“cum_weights”时“random.choices”总是返回相同的元素?
- python - Chatterbot 安装工作,但对变量的调用中断
- c# - 更新仅统一调用一次
- r - 在 Shiny 中使用 varSelectInput 过滤数据?
- excel - 公式将它们重复的一系列行的两列相加