2012-01-16 10 views
0

コントローラの機能へのアクセスをすべてキャッチし、認証されていれば通常どおりにルーティングし、そうでない場合はログインフォームを表示します。CodeIgniter:ルーティングと認証

_remapは、コントローラの機能へのアクセスと、認証された場合のルーティングをCIに戻す方法を確認するのに最適な場所として機能しますか?

+0

各リクエストでユーザーを認証しますか? – Dau

答えて

1

_remapはこのためには必要ありません。あなたはそれを使うことができますが、する必要はありません。

コントローラの__construct()メソッドでのアクセスを確認します。現在の方法は$this->router->fetch_method()で取得し、それに対して認証することができます。

さらに、これを必要とするすべてのコントローラーをベースコントローラー(別名「MY_Controller」)に拡張してください。 Auth_Controllerと書いて、そこで__construct()の認証チェックを行うことができます。現在のクラスは$this->router->fetch_class()で取得することができますが、このメソッドを使うには、コントローラーが通常CI_Controllerの代わりにAuth_Controllerを拡張していることを確認してください。

アクセス権がない場合は、必要な場所にリダイレクトするか、エラーを表示するだけです。

+0

恐ろしい!ありがとう! – Vitaly

+0

問題はありません - 私は例を投稿するつもりでしたが、あなたがしていることを知っているように思えます。これは意味があるのか​​、それとも不明なことはありますか? –

+0

これは十分です。それが働いて:) – Vitaly

1

あなたはこの

$class = $this->CI->router->class; 
$method = $this->CI->router->method; 

によってメソッドとクラス名を取得することができますし、この認証にあなたがあなたからhooksを有効にしているたびにチェックするためにライブラリがAuthentication呼ば作成し、この

であなたの方法についてご確認ください設定ファイルには、post_controller_constructorフックを付けて毎回認証を確認してください。

+0

良い代替、感謝! – Vitaly

関連する問題