2011-12-27 8 views
0

私の場合は何が最善であるのだろうかと思っています。Codeigniter - 認証ライブラリまたはカスタムコントローラ?

  • みんな
  • につき公開部分のみ公共エリア(1の各ページで登録されたユーザー

のプライベート1:私は2つの主要なセクションでのCodeIgniterを使ってサイトを構築していますコントローラ)私はサインとリンクをサインしたいと思っています。ユーザーがログインしている場合は、プライベートエリアにリダイレクトする必要があります。

  1. ユーザーコントローラは、私は私は、ユーザーがログインしている場合に制御する必要があるサイトの各ページに思った最初のものであり、これは不可能または以来、非常に悪いです:

    は、今私は2つの選択肢があります私は別のコントローラを使用しています

  2. ライブラリで作業を開始しましたが、実装方法がわかりません(フォームの検証はコントローラまたはライブラリ自体で行う必要がありますか?)モデルですか?)

あなたは最高だと思いますか?どうして?どのように実装するのですか?

(と私はそれを行う方法を学びたいので、はい、私は車輪の再発明し、主に既存のライブラリを使用していないなど)

+0

ユーザが 'Users'のコンストラクタにログインしているかどうかを確認しますか? – kba

+0

しかし、私はサイトのページを表示するために別のコントローラを使用しているので、別のコントローラのメソッドを呼び出すことはできません。または、単にMVCモデルを破棄することなくコンストラクタでロードしてください。 –

+1

CIは、これは静的であり、拡張機能や再利用に柔軟性がなく、特にコントローラには当てはまります。理想的には、アクセスチェックを必要とするコントローラーを装飾し、アクセスチェックが必要なコントローラーをルーティングで定義します。アプリケーションコントローラは、コントローラが必要とする場合にアクセスチェックを実行します。 – hakre

答えて

-1

フォームの検証とクエリジョブはコントローラ自体で行われるべきです。ライブラリは、これらの機能を実装する必要のないツールのように機能しますが、必要に応じてクエリを使用してデータをチェックすることもできますが、コントローラで作業する方がよいでしょう。

にログフラグれる有するのアイデア:ユーザーがログインしている場合

  1. 、それがアクセスを表示するためのセッションを作成します。
  2. プライベートパーツのセッションを毎回確認してください。
0
Super Controller 
      =>assign user data,settings,configs etc 
     |-----private controller extends super controller 
      =>check user credentials 
     |-----admin controller extends super controller 
      =>check user && admin credentials 

あなたのスーパーコントローラは、あなたの公開コントローラは、限り、あなたは唯一の割り当てを行うよう、チェックは...あなたが公共の希望

ものは、ちょうどスーパーコントローラ

を拡張されていませんプライベートにしたいものはどれもプライベートコントローラを拡張します

+0

これは私がhmvc –

+0

良い考えを使用するかもしれません、そうすればセクション/部分的なビューやウィジェットをブロックすることができます(モジュール:: run( 'auth/_check_permissions'、$ user_id)) – Philip

関連する問題