我有一个组件,其中有一个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();
}
}
所以如果{}进入内部,但不会重定向到登录页面。
答案 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'));