2013-02-11 24 views
1

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

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

所有的路由规则都在工作,我只需要访问那个类。

+0

为什么要在路由页面中使用会话类。在路由中定义一个默认控制器,然后在默认控制器的构造函数中检查登录。 – ripa 2013-02-11 12:27:35

+0

问题是我已经使用MY_Controller作为管理后端。 我正在构建一个预发布倒计时(所有的网址都必须指向该页面,除了管理员),并且在我的路由中添加了这个(伪代码): 'if(now> launch of the date || the the用户名为admin){正常导航路由} 其他{所有路由必须指向倒计时,除了登录}' 这些路由工作正常,我只需要检查用户权限(存储在admin中) – user1491124 2013-02-11 16:38:59

回答

0

你通常不能够从配置&路线文件,因为类不是在这一点上

装虽然有一些变通方法来访问会话访问辛格尔顿($这个 - >),在更好的方式是到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

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'); 
    } 
} 
} 

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

+0

我无法使用MY_Controller,它用于管理后端,请参阅我在原始文章中添加的评论 – user1491124 2013-02-11 16:40:07