有没有办法对控制器的某些操作禁用 CSRF 验证,同时对其他操作保持启用状态?
就我而言,我有几个可配置的 Action 类,它们旨在注入到控制器中。我无法将 csrf 验证令牌传递到 AJAX 请求中,因为我正在使用的东西是前端的外部(不是我制作的)WYSIWYG 插件。是的,我仍然可以使用这些操作禁用整个控制器的 csrf 验证,但它可能不安全。
对于特定的控制器/操作,您可以禁用 CSRF 验证,如下所示:
use Yii;
...
Yii::$app->controller->enableCsrfValidation = false;
或者在控制器内部:
$this->enableCsrfValidation = false;
看一眼$enableCsrfValidation的财产yii\web\控制器.
Update:
这是一些规范。
如果您想禁用单个操作的 CSRF 验证,您需要在beforeAction
事件处理程序,因为在操作运行之前会检查 CSRF 令牌(在beforeAction
of yii\web\Controller
).
/**
* @inheritdoc
*/
public function beforeAction($action)
{
if ($action->id == 'my-method') {
$this->enableCsrfValidation = false;
}
return parent::beforeAction($action);
}
官方文档:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)