【问题标题】:How do i redirect to a page from php yii2.0 components?如何从 php yii2.0 组件重定向到页面?
【发布时间】:2016-09-16 04:28:36
【问题描述】:

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

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

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

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

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

组件/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();
}

}

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

【问题讨论】:

  • 您在 createUrl 中缺少控制器:Yii::$app->getResponse()->redirect(Yii::$app->urlManager->createUrl('site/login'));
  • 谢谢。但我正在使用 url 管理器,其中我的登录名是用“登录名”引用的,所以不需要使用站点/登录名。

标签: session redirect yii2 timeout components


【解决方案1】:

也许这个对你有帮助:)

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        正确的方法是:

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

        【讨论】:

          【解决方案5】:

          你可以试试下面的代码:

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

          【讨论】:

          • 嘿 janhavi,谢谢。我也在做同样的事情,但它不起作用。
          【解决方案6】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-06-12
            • 1970-01-01
            • 2016-10-23
            • 1970-01-01
            • 2011-03-20
            • 1970-01-01
            • 2012-01-02
            • 1970-01-01
            相关资源
            最近更新 更多