如果会话在应用程序级别使用Yii框架为null,我想重定向到登录页面。它应适用于登录页面以外的所有页面。任何帮助赞赏
答案 0 :(得分:1)
最好的方法是修改 Controller 基类( protected / components / Controller.php )。您可以添加init()
函数,该函数将在每次Controller调用时执行,如:
public function init(){
if(!isset($_SESSION['mysession'])){
this->redirect("site/login");
}
}
您可以使用以下方式访问当前的控制器:
Yii::app()->controller->id
但是你无法在init函数中访问Action(通常你可以使用Yii::app()->controller->action->id
)。最简单的方法是检查URL,如:
if ($_SERVER['REQUEST_URI'] == "/site/login"){
// it's the login page
}
如果您正在子文件夹中使用localhost,则可能需要在进行比较之前编辑$_SERVER['REQUEST_URI']
,如下所示:
$url = str_replace("/mysubfloder","",$_SERVER['REQUEST_URI']);
然后与之比较。也可能最好在字符串中检查 index.php 。
我假设您使用此功能使某些页面无法访问未登录的用户?如果是这种情况,您确实应该使用accessRules
。 Read more about that here