0

私はかなりの調査を行いましたが、満足のいく答えは見つかりませんでした。

tank auth などの CodeIgniter ライブラリはどのように使用すればよいですか? 私はいくつかの方法を見つけましたが、それらはすべてちょっとつまらないようです:

  1. 必要に応じてコントローラー機能を追加したり、スタイルを含めたりして、コントローラーをほとんどそのまま使用しますか?
  2. $this->tank_auth の呼び出しと tank auth に含まれるビューに依存して、コントローラーを例として使用して、自分自身をモデル化しますか?
  3. それとも、tank-auth コントローラーで MY_Controller を拡張し、それを認証が必要な特定のコントローラー用に拡張し、parent::login() (または register()、activate() など) を呼び出すだけですか?

最初のオプションが最善のようですが、大量のコードをコピーするのを避けるのは難しいようです (ログイン フォームが必要で、/auth/login にリダイレクトしたくない場合はどうなりますか?)

2 番目のオプションにも同じ問題がありますが、さらに悪化します。login_form ビューを使用するたびに、tank auth コントローラーのログイン関数のロジックを含める必要がありますね。

最後のは本当にハックで反MVCのように思えますが、間違っているかもしれません。

4

1 に答える 1

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 に付属しているものをそのまま使用することも、カスタマイズすることも、独自のビューを作成することもできます。

于 2013-05-09T02:04:17.290 に答える