【问题标题】:How to call Module function in Codeigniter HMVC? Tank auth如何在 Codeigniter HMVC 中调用模块函数?坦克认证
【发布时间】:2011-12-09 22:19:56
【问题描述】:

我安装了 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'); 

        }   

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

【问题讨论】:

  • 我认为您需要检查elseif ($this-&gt;tank_auth-&gt;is_logged_in(FALSE)) 的输出。如果这不评估为真,您的用户将不会被重定向(即使登录检查也失败)并且不会采取任何操作,将用户留在管理页面上。
  • 感谢 olaf,有没有一种方法可以测试我尝试运行的模块:: 是否找到它的目标函数??

标签: php codeigniter hmvc tankauth


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多