Session 如何从php yii2.0组件重定向到页面?

Session 如何从php yii2.0组件重定向到页面?,session,redirect,yii2,timeout,components,Session,Redirect,Yii2,Timeout,Components,我有一个组件,其中有一个init()函数,在每个操作之前调用它 我只需要检查会话是否过期,然后将用户重定向到登录 这是我的密码, config/main.php组件- 'MyGlobalClass'=>[ 'class'=>'common\components\MyGlobalClass' ], 及 components/MyGlobalClass.php: class MyGlobalClass extends \yii\base\Component{ p

我有一个组件,其中有一个init()函数,在每个操作之前调用它

我只需要检查会话是否过期,然后将用户重定向到登录

这是我的密码, config/main.php组件-

'MyGlobalClass'=>[
        'class'=>'common\components\MyGlobalClass'
    ],

components/MyGlobalClass.php:

class MyGlobalClass extends \yii\base\Component{
public function init() {
    //echo "Hi";
    if(Yii::$app->user->isGuest)
    {
        //echo 'called';exit;
        Yii::$app->getResponse()->redirect(Yii::$app->urlManager->createUrl('login'));
    }
    //parent::init();
}
}


因此,如果{},它将进入内部,但不会重定向到登录页面。

您可以使用它发送响应

Yii::$app->response->send(); 
但请查看控制器/操作不同访问控制指南
您可以尝试以下代码:

Yii::$app->getResponse()->redirect(Yii::$app->urlManager->createUrl('login'));
return;
正确的方法是:

 Yii::$app->response->redirect(Yii::$app->urlManager->createAbsoluteUrl('site/logout'));
return;

你可以试试这个,它对我有用:

return Yii::$app->getResponse()->redirect('admin/page/signin');

这样,您将得到一个无限重定向循环:在每次控制器调用时都会调用该组件,重定向将永远不会停止

最好从
公共函数行为()中管理它。
在每个控制器上,请查看上的部分。

这可能对您有帮助:)


为什么不使用访问控制?createUrl中缺少控制器:
Yii::$app->getResponse()->重定向(Yii::$app->urlManager->createUrl('site/login')谢谢。但我使用的是url管理器,其中我的登录名是“login”,所以不需要使用site/login。嘿,janhavi,谢谢。我也在做同样的事情,但它不起作用。
return Yii::$app->getResponse()->redirect('admin/page/signin');
return Yii::$app->getResponse()->redirect(['user/login']);
return Yii::$app->getResponse()->redirect(Yii::$app->urlManager->createUrl('user/login'));