在yii2中使用访问控制
我使用访问控制只允许经过身份验证的用户访问在yii2中使用访问控制,yii2,Yii2,我使用访问控制只允许经过身份验证的用户访问 public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'only' => ['display'], 'rules' => [
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";
}
当我尝试在不登录的情况下访问显示操作时,我被重定向到登录页面。但当我尝试访问显示操作时,即使已登录,它也会重定向到索引页。我做错了什么?添加
'actions'=>['display'],
如下
'rules' => [
// allow authenticated users
[
'actions' => [ 'display'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action) {
return $this->redirect(Yii::$app->request->baseUrl.'/site/login');
}],
],
正常情况下,它对我有效代码没有问题。只需“matchCallback”,它被调用给经过身份验证的用户,并重定向到登录,如果登录,最终重定向到索引。 删除“matchCallback”解决了这个问题
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
同意,这是正确的答案。要处理此情况,应使用“denyCallback”