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



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

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

这是我的代码,配置/主.php 响应项 -

'MyGlobalClass'=>[
        'class'=>'commoncomponentsMyGlobalClass'
    ],

'bootstrap' => ['log','MyGlobalClass'],

组件/MyGlobalClass .php :

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

}

所以它进入 if{} 内部但不重定向到登录页面。

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

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

您可以使用它来发送您的回复

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

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

您可以尝试以下代码:

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

正确的方法是:

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

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

最好从每个控制器上的public function behaviors()管理它,请查看 Yii2 文档的授权部分。

也许这个可以帮助你:)

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

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

相关内容

  • 没有找到相关文章

最新更新