我需要一个控制器的一个公开可用的动作,这样用户就可以在不经过认证的情况下请求它。
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'only' => [ 'callback' ],
'rules' => [
[
'allow' => true,
'actions' => [ 'callback' ],
],
],
],
];
}
我尝试了以下选项,但仍然收到
Bad Request (#400)
并重定向到登录页。我该如何解决这个问题?
最佳答案
我猜你是想发一个邮件请求。
只要yii2默认要求对所有post请求进行csrf验证,您可能会得到类似的行为。
尝试使用以下代码禁用它:
private $noAuthRoutes = ['callback'];
public function beforeAction($action)
{
if(in_array($action->id,$this->noAuthRoutes)) {
$this->enableCsrfValidation = false;
}
return parent::beforeAction($action);
}
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'only' => $this->noAuthRoutes,
'rules' => [
[
'allow' => true,
'actions' => $this->noAuthRoutes,
],
],
],
];
}
希望这有帮助。
关于php - 如何在 Controller 中为单个操作禁用auth?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891257/