12


5

私はPHPを使ってWebアプリケーションを書いています。 これにはMVCパターンを使いたいので、http://codeigniter.com/ [CodeIgniter]を使うことにしました。 私のアプリケーションには認証が必要なページがいくつかありますが、そうでないページもあります。 コードの重複がないように、私はこれを非常に一般的な方法で設計したいと思います。 誰かがこのためにいくつかの良い "デザイン/クラス構造"を指すことができますか?

7 Answer


10


"Ion Auth"は、リーンでよくプログラムされ、やや広く使用されており、積極的に維持されています。


8


すべてのページビューのコードイグナイターアプリで自動ロードできるカスタムライブラリを作成します。 それは次のような機能を持つべきです。

  • ユーザーを認証します。 ユーザーがログインしているかどうかを確認する

  • あなたをログインしてください。 セッション変数か何かを設定する

  • ログアウトする

それから、あなたのコントローラクラスであなたはコンストラクタの中で認証機能への呼び出しをすることができますそして結果に応じて通常通り続けるかアクセス拒否メッセージでログインスクリーンにそれらをリダイレクトすることができます。

「認証」のためのコードイグナイターウィキで検索をしてください、そして役に立つかもしれない多くの結果があります:http://codeigniter.com/wiki/


3


「いくつかのページ」によって、いくつかのコントローラ(ビューへのゲートウェイ)を意味している場合は、コントローラの継承を調査することをお勧めします。 デフォルトのCodeIgniterコントローラを自分自身で拡張し、コンストラクタに認証チェックを入れます(ログインフラグなどのセッションをチェックし、ログインしていない場合はログインページにリダイレクトします)。 その後、認証を必要とするすべてのコントローラは、新しい親コントローラを拡張する必要があります。 それでおしまい。

CodeIgniterフォーラムに進んで、コントローラーを拡張するためのいくつかの異なる方法を探してください。 これはhttp://codeigniter.com/forums/viewthread/89768/#452890です。


0


私は最近同じことを調べていました、そして私は素晴らしい authenticationモジュールを含むhttp://kohanaframework.org/[Kohana]と呼ばれるCodeIgniterフォークを見つけました。 あなたがCIに慣れているなら、多分KohanaのauthモジュールをCIに逆に適応させることはあなたに時間を節約するでしょうか? プロジェクトを始めたばかりで、PHP 5を使用しても問題ない場合は、切り替えを検討してください。それらは非常によく似たフレームワークです。


0


CI用にCL_AUTHライブラリを使用できますか。 私はそれを使いました、そしてそれはうまくいきます。 あなたはそれをここで見つけることができますhttp://www.jasonashdown.co.uk/cl_auth_doc/


0


https://github.com/[GitHub]にアクセスしてCodeigniter Auth or Authenticationを検索するか、 https://github.com/[CodeIgniter Wiki]を確認してください。異なる機能を持つ多くのライブラリを見つけます。 それらを探索して必要なものを選択してください。 しかし、注意してください、多くはCI 2用であり、あなたは http://www.codeigniter.com/userguide3/installation/upgrade_300.html#step-2-update-your-classes-file-names[クラスの最初に]しなければなりません]それ以外の場合はまったく機能しません。


0


人気のhttps://github.com/benedmunds / CodeIgniter-Ion-Aut [Auth]ライブラリの修正版であるhttp://haseydesign.com/flexi-auth/[flexi auth]を使用してください。 それはより高度であり、すべての仕事をそのまま使用できます。

_ flexi authは、CodeIgniter 2.0+フレームワークで使用するための無料のオープンソースユーザー認証/ログインライブラリです。 _

私はそれが遅すぎることを知っていますが、私は他の誰かがそれが役に立つとわかることを望みます。 乾杯!