Yii2 和以前一样,配置中的请求身份验证规则不适用于页面

Yii2 as beforeRequest authentication rule in config not working for pages

在 Yii2 高级应用程序中,我试图让用户仅访问登录页面和关于页面。

所以我在 /common/config/web.php 配置文件中加入了以下规则

    'as beforeRequest' => [  //if guest user access site so, redirect to login page.
    'class' => 'yii\filters\AccessControl',
    'rules' => [
        [
            'actions' => ['login', 'error', 'request-password-reset', 'about'],
            'allow' => true,
        ],
        [
            'allow' => true,
            'roles' => ['@'],
        ],
    ],
], 

登录、错误和请求密码重置工作正常,但关于页面不正常。

我也尝试了“/page/about”和'page/about',但我没有运气。

关于如何修复或解决此问题的任何想法。

谢谢

应该是'view'而不是'about'

很抱歉,我找到了答案,规则很好,但我使用的是页面组件和 PageController,它正在从以下控制器中的管理员(数据库)获取视图

class PageController extends Controller{
public function actionView($slug)
{
    $model = Page::find()->where(['slug'=>$slug, 'status'=>Page::STATUS_PUBLISHED])->one();
    if (!$model) {
        throw new NotFoundHttpException(Yii::t('frontend', 'Page not found'));
    }

    $viewFile = $model->view ?: 'view';
    return $this->render($viewFile, ['model'=>$model]);
}}

所以在规则中我需要对 PageController

呈现的所有视图使用 'view'

试试这个代码

'as beforeRequest' => [  //if guest user access site so, redirect to login page.


'class' => 'yii\filters\AccessControl',
    'rules' => [
        [
            'actions' => ['login', 'error', 'request-password-reset', 'about'],
            'roles' => ['@']
            'allow' => true,
        ],
        [
            'allow' => true,
            'roles' => ['?'],
        ],
    ],
],

希望对你有用