1

私は何年もPHPをやっていて、ユーザーがログインしているかどうかなどを確認する方法を知っていますが、MVCの方法でそれを行う方法の良い例を見つけることができません.

メンバーページのコントローラーがメンバー/メンバーページ1、メンバー/メンバーページ2のようなものである場合、「メンバー」という単語の正規表現でコントローラーの開始を確認でき、trueが返された場合はチェックを行うことができると考えていましたユーザーがログインしているかどうかを確認してください。おそらくうまくいくでしょうが、それが最善の方法ですか?

また、controllers フォルダ内の members ページは、controllers フォルダ内の「members」というサブフォルダに配置した方がよいのでしょうか? とにかく、私は間違いなくビューでそれをやっているでしょう。

4

2 に答える 2

4

最良のオプションは、コントローラーの外部でユーザーのアクセス権を確認することです。許可はコントローラーの責任ではありません。あなたはSRPを壊しているでしょう。実装方法を確認したい場合は、次のトピックをお読みください: ACL の実装

サイトのメンバー専用エリアについては、それらを表示するかエラーを表示するかの決定は、コントローラーにアクセスする前に、またはビューによって処理できます受動的なもの)。

多くの場合、両方の部分が関係します: 認証サービスはモデル レイヤーの状態を変更し、ビューはプレゼンテーションにエラー メッセージ テンプレートを含めることを選択してその変更に反応します。

于 2012-07-17T11:04:26.003 に答える
0

すべてが異なる方法でそれを行います。私はPHP用の小さなMVCフレームワークを構築しようとしましたが、これが私が認証を行った方法です(実際にはレールの方法によく似ています:)

持っていた'SessionsController'

には、呼び出され、ユーザー セッションの現在の状態を返すSessionsControllerメソッドが含まれていました。このメソッドは、保護したいクラス'user_is_logged_in'の特別なメソッドに追加されました。'_before'

メイン アプリケーションは、_before他のメソッドが存在する場合、常にその前にコントローラー アクションを実行していました。特定のアクションでの実行を停止するために渡すこともできる'except'ため、ユーザーがそのアクションでログインしているかどうかを確認するだけでした。

もちろん、@tereškoが大いに提案したように、おそらくもっと準拠した方法がありますが、私が取り組んでいた小さなアプリケーションではうまくいきました。

于 2012-07-17T11:16:05.353 に答える