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

时间:2015-10-23 06:33:09

标签: yii2 yii2-advanced-app

如果用户没有登录,那么用户必须在登录页面上重定向,因为我找到了对我来说工作正常的功能,我使用了以下功能

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);
}

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

2 个答案:

答案 0 :(得分:17)

您需要在config/web.php部分之后的components中添加以下代码。

'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' => ['@'],
        ],
    ],
],

答案 1 :(得分:3)

实际上,如果用户没有权限,Yii会自行将他重定向到登录页面。 如果您有另一个,可以更改loginUrl。或者,如果您使用ajax,则可以实现自己的重定向。 http://www.yiiframework.com/doc-2.0/yii-web-user.html

以下是Yii安全性的说明 http://www.yiiframework.com/doc-2.0/guide-security-authorization.html