如果会话在使用 Yii 框架的应用程序级别为空,我想重定向到登录页面。它应该适用于除登录页面之外的所有页面。任何帮助表示赞赏
问问题
3043 次
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 回答