ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp は各メソッドでログインするかどうかをどのように判断しますか?
[tp版本3.2.3]
我在Controller里面写了一个公共类CommonController.class.php
、ログインするかどうかを決定し、ログインしていない場合はログイン ページにリダイレクトする構築メソッドを書きました:
これに関する 1 つの問題は、ログインしていないときに常にリダイレクトされることです。エラー127.0.0.1 将您重定向的次数过多。
なので、
次に、CommonController を継承する他の各ファイルにコンストラクターを追加します (ArticleController.class.php
エラーメッセージ:
リーリー最後にエラーを避けるために次のように書きます:
リーリー質問:
CommonController.class.php を継承するクラスが __construct で判定できないのはなぜですか?
CommonController.class.phpを継承するクラスでログインするかどうかを判断する必要がある場合、各メソッド内でparent::isLogin();
を記述する必要がありますが、これは合理的でしょうか?それともそうするのが本質的に合理的なのでしょうか?
[tp版本3.2.3]
我在Controller里面写了一个公共类CommonController.class.php
、ログインするかどうかを決定し、ログインしていない場合はログイン ページにリダイレクトする構築メソッドを書きました:
これに関する 1 つの問題は、ログインしていないときに常にリダイレクトされることです。エラー127.0.0.1 将您重定向的次数过多。
なので、
次に、CommonController を継承する他の各ファイルにコンストラクターを追加します (ArticleController.class.php
エラーメッセージ:
リーリー最後にエラーを避けるために次のように書きます:
リーリー質問:
CommonController.class.php を継承するクラスが __construct で判定できないのはなぜですか?
CommonController.class.phpを継承するクラスでログインするかどうかを判断する必要がある場合、各メソッド内でparent::isLogin();
を記述する必要がありますが、これは合理的でしょうか?それともそうするのが本質的に合理的なのでしょうか?
リーリー
パブリック クラスではリダイレクトしないでください。パブリック クラスは、ログインしているかどうかを判断し、true または false を返し、返された結果に基づいて動作するだけです。
プログラム入口に書いてください
別のログイン Guestcontroller を作成します。commonController から継承し続けるのではなく、ログインまたはログアウトする前に、Controller を直接継承します。ログイン後は、すべてが commonController のサブクラスによって処理されます。
アイデア
CommonContrller の __construct でログイン検証を行います。parent::__construct が __construct に含まれている必要があることに注意してください
その後、各コントローラーはこの Common を継承しますが、もちろん Login コントローラーは例外で、Think の下のコントローラーを継承します
それで、試してみてください
ログインコントローラーは継承せず、ログインを決定するだけで書き込みません。