集成CodeIgniter库(如tank auth)

时间:2013-05-09 00:11:15

标签: php codeigniter tankauth

我做了很多研究,并没有找到令人满意的答案。

我应该如何使用坦克auth等CodeIgniter库?我找到了一些方法,但它们似乎都显得乏善可陈:

  1. 我是否主要按原样使用控制器,根据需要添加控制器功能/包括样式?
  2. 我是否使用控制器作为示例来模拟我自己的模型,依赖于对$ this-> tank_auth的调用以及tank auth中包含的视图?
  3. 或者我使用tank-auth控制器扩展MY_Controller,然后为需要身份验证的任何特定控制器扩展它,只需调用parent :: login()(或register(),activate()等)?
  4. 第一个选项似乎是最好的,但似乎很难避免复制大量代码(如果我想要一个登录表单会发生什么,但又不想重定向到/ auth / login?)< / p>

    第二个选项有同样的问题,但更糟。每次我想使用login_form视图时,我都需要包含tank auth控制器的登录功能的逻辑,对吗?

    最后看起来真的很hacky,对我来说似乎是反MVC,但也许我错了。

1 个答案:

答案 0 :(得分:1)

查看http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

伪代码(参见链接 - 非常好的例子):

应用/配置/ config.php中

$autoload = array('tank_auth');

// add this to the bottom of config.php as per the directions in the link
function __autoload($class)
{
     if(strpos($class, 'CI_') !== 0)
     {
        @include_once( APPPATH . 'core/'. $class . EXT );
     }
}

应用/核心/ Private_Controller.php

class Private_Controller extends CI_Controller
{
    function __construct()
    {
        parent::__construct();

        if(! $this->tank_auth->is_logged_in()){
            redirect('auth/login');
        }
    }
}

控制器

 class PrivateStuff extends Private_Controller {
     function index() {
         echo "you are logged in";
     }
 }

-

http://example.com/index.php/privatestuff/
>you are logged in

就视图而言,您可以使用lib随附的那些,自定义它们或创建自己的视图 - 由您决定。