我正在使用访问控制来仅允许访问经过身份验证的用户。
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['display'],
'rules' => [
// allow authenticated users
[
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action) {
return $this->redirect(Yii::$app->request->baseUrl.'/site/login');
}],
],
],
];
}
public function actionDisplay()
{
echo "display";
}
当我尝试在不登录时访问显示操作时,我被重定向到登录页面。但是当我尝试访问显示操作时,即使已登录,它也会重定向到索引页面。我做错了什么?
答案 0 :(得分:1)
添加'actions' => [ 'display'],
如下所示
'rules' => [
// allow authenticated users
[
'actions' => [ 'display'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action) {
return $this->redirect(Yii::$app->request->baseUrl.'/site/login');
}],
],
通常它对我有用
答案 1 :(得分:1)
代码没有问题。只是&匹配回调'调用已通过身份验证的用户并重定向到登录,如果登录则最终重定向到索引。 删除' matchCallback'解决了它。
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],