在yii2中,在登录页面上重定向的最佳方式是什么

在yii2中,在登录页面上重定向的最佳方式是什么,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,若用户并没有登录,那个么用户应该在登录页面上被重定向,因为我发现这个函数对我来说运行良好,所以我使用了下面的函数 public function beforeAction($action) { if (\Yii::$app->getUser()->isGuest && \Yii::$app->getRequest()->url !== Url::to(\Yii::$app->getUser()->logi

若用户并没有登录,那个么用户应该在登录页面上被重定向,因为我发现这个函数对我来说运行良好,所以我使用了下面的函数

public function beforeAction($action)
{        
    if (\Yii::$app->getUser()->isGuest &&
        \Yii::$app->getRequest()->url !== Url::to(\Yii::$app->getUser()->loginUrl)
    ) {
        \Yii::$app->getResponse()->redirect(\Yii::$app->getUser()->loginUrl);
    }
    return parent::beforeAction($action);
}

这对我来说很好,但为此我需要在每个控制器中添加功能,我想做的是,我需要通用功能,我在哪里可以执行此操作,所以有人能告诉我最好的方法是什么吗?

实际上,如果用户没有权限,我会自动将其重定向到登录页面。 如果您有另一个loginUrl,您可以更改loginUrl。或者,如果您使用ajax,您也可以实现自己的重定向。

以下是Yii安全的解释

您需要在
config/web.php
组件之后添加以下代码

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

为什么不使用
yii\web\User::loginRequired()
?该函数完全满足您的需要,还可以记住当前url。请参阅Anton M的答案。当我将其添加到后端或前端下时,它对我来说效果很好。