0

如果会话在使用 Yii 框架的应用程序级别为空,我想重定向到登录页面。它应该适用于除登录页面之外的所有页面。任何帮助表示赞赏

4

1 回答 1

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
}

$_SERVER['REQUEST_URI']如果您在子文件夹中的本地主机上工作,您可能需要在比较之前编辑,例如:

$url = str_replace("/mysubfloder","",$_SERVER['REQUEST_URI']);

然后与之比较。也可能最好检查字符串中的index.php

我假设您正在使用它来使非登录用户无法访问某些页面?如果是这种情况,你真的应该使用accessRules. 阅读更多关于这里

于 2012-12-16T13:25:40.847 回答