ホームページ  >  記事  >  バックエンド開発  >  thinkphp は各メソッドでログインするかどうかをどのように判断しますか?

thinkphp は各メソッドでログインするかどうかをどのように判断しますか?

WBOY
WBOYオリジナル
2016-08-04 09:20:582254ブラウズ

[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 の下のコントローラーを継承します

それで、試してみてください

ログインコントローラーは継承せず、ログインを決定するだけで書き込みません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。