如何在Codeigniter HMVC中调用模块功能?坦克认证

时间:2011-11-25 13:28:53

标签: php codeigniter hmvc tankauth

我已经安装了tank auth以节省我创建身份验证脚本的时间。

当我使用HMVC时,tank auth拥有自己的模块(modules / auth)。

如何使用登录脚本保护我的其他模块(/ admin,/ members等)?

根据我的阅读,我需要做一些事情:

modules::run('auth/is_logged_in'); 

我的身份验证控制器如下:

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

class Auth extends MX_Controller
{
    function __construct()
    {
        parent::__construct();

        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');
        //$this->load->library('security');
        $this->load->library('tank_auth');
        $this->lang->load('tank_auth');

    }

    function index()
    {
        if ($message = $this->session->flashdata('message')) {
            //$this->load->view('auth/auth/general_message', array('message' => $message));

            $main_content = 'auth/auth/general_message';
            $this->load->view('includes/template', array('message' => $message, 'main_content' =>$main_content));
        } else {
            redirect('auth/login/');
        }
    }

    /**
     * Login user on the site
     *
     * @return void
     */
    function login()
    {
        if ($this->tank_auth->is_logged_in()) {                                 // logged in
            redirect('admin');

        } elseif ($this->tank_auth->is_logged_in(FALSE)) {                      // logged in, not activated
            redirect('auth/send_again/');........

我想用登录脚本保护的控制器/模块:

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

    class Admin extends MX_Controller {

        public function __construct(){
            parent::__construct();  



            modules::run('auth/auth/login'); 

        }   

以上似乎不起作用?我错过了什么?

1 个答案:

答案 0 :(得分:4)

我将此代码放入我的控制器中:

function _remap($method)
{
    if (method_exists($this, $method) && $this->tank_auth->is_logged_in())
    {
        $this->$method();
    }
    else
    {
        redirect('/auth/login/');
    }
}