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

时间:2016-05-19 10:37:24

标签: session redirect yii2 timeout components

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

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

这是我的代码, config / main.php coponents -

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

'bootstrap' => ['log','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();
}

}

所以如果{}进入内部,但不会重定向到登录页面。

6 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您可以使用此功能发送回复

Yii::$app->response->send(); 

但请查看控制器/操作不同访问控制指南 http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

答案 2 :(得分:0)

您可以尝试以下代码:

Yii::$app->getResponse()->redirect(Yii::$app->urlManager->createUrl('login'));
return;

答案 3 :(得分:0)

正确的方法是:

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

答案 4 :(得分:0)

这样你就会得到一个无限重定向循环:在每个控制器调用上调用该组件,重定向永远不会停止。

最好从每个控制器上的public function behaviors()进行管理,查看Authorization上的Yii2 documentation部分。

答案 5 :(得分:0)

可能这个可以帮助你:)

return Yii::$app->getResponse()->redirect(['user/login']);

return Yii::$app->getResponse()->redirect(Yii::$app->urlManager->createUrl('user/login'));