2010-11-21 7 views
0

この質問の名前を付ける方法をお考えください。これが可能な限り最良の状況だと考えてください。KohanaPHP Appのユーザー認証とエンドレスループ

状況: 私はKohanaPHPフレームワークで書かれた小さなアプリを手に入れました。しかし、私の夢中になる小さなバグが1つあります。

私は自分のCore_Controllerを持っていますが、これはこのアプリケーションのすべてのコントローラによって拡張されています。このコントローラーのコンストラクターで、ユーザープロファイルのステータスを確認しています。ここまでは順調ですね。私は論理的な問題に直面していますが。エンドレスリダイレクトループと呼ばれています。私が(Core_Controllerコンストラクタで)Member_Controllerにリダイレクトしようとすると、無限のloppのためworkigできなくなります。なぜそれが起こるのか理解しています。

ソリューション: 私はそれを柔軟にする方法を探しています。この検証をヘルパーに移してCore_Controllerコンストラクタで呼び出そうとしました。ただし、正しく動作している可能性があります。

質問: すべてのコントローラのコンストラクタで検証を行う必要がありますか?それを行う普遍的な方法はありますか?

あなたの考えを待っています。

M.A.

+0

私はまた、ベースコントローラ(http://docs.kohanaphp.com/general/controllers#using_a_base_controller_for_your_application)を使用しようとしていました。同じ結果で –

答えて

0

ただ、ユーザーが検証されたかどうかを確認し、現在のリクエストのアクションは、メンバー/検証のようなものではない、リダイレクトを行います。

そしてparent::__construct();は、親のコンストラクタを呼び出しますので、私はあなたがそれは(あなたがにリダイレクトしているページ)リダイレクトされません条件を必要とするいずれか..

0

に問題が表示されません。これに類似したコードが必要になります。

if not member_controller then 
    redirect to member_controller 
else 
    do nothing 
endif 

elseは不要ですが、追加されたばかりなので、より分かりやすくなりました。