1

如何访问 routes.php 中的 codeigniter 会话类?

我需要该类将所有请求(/login 除外)路由到某个控制器,除非用户具有管理员权限($this->session->userdata('logged'))。

所有路由规则都有效,我只需要访问该类。

4

2 回答 2

0

您通常无法从配置和路由文件中访问单例 ($this->),因为此时未加载类

尽管有一些解决方法可以访问会话,但更好的方法是使用 MY_Controller 和 _remap() 函数:

http://ellislab.com/codeigniter/user-guide/general/controllers.html#remapping

下面是一些示例代码,更多地解释了它们是如何工作的:

http://www.codebyjeff.com/blog/2012/11/ci-_remap-function-the-friend-you-never-knew-you-had

于 2013-02-11T12:27:41.980 回答
0

创建它MY_Controller并将其存储在 中application/core/,然后让您的其他控制器扩展它:

<?php if (! defined('BASEPATH')) exit('No direct script access');

class MY_Controller extends CI_Controller {

function __construct() {
    parent::__construct();
    $this->_check_auth();
}

private function _check_auth(){
    if(!$this->session->userdata('is_admin')){
        $this->session->sess_destroy();
        redirect('login');
    }
}
}

注意:上面的代码假设您已经有一个用户登录系统。

于 2013-02-11T13:02:13.917 回答