2009-03-31 3 views
0

私は自分自身のPHPフレームワークを開発しています。セッションオブジェクトとユーザオブジェクトとログインコントローラの間の行を分割する

私はログインシステムを構築したいと思います。私はこれを何度もやったことがありますが、今はシステム上で確かめる/フィードバックを出したいだけです。私の質問がある私は、我々が必要と知っている

...

  • セッションオブジェクト
  • ユーザーオブジェクト
  • Aログインコントローラ

は、誰がどのような力を保持しているのですか?

ここに私の考えがあります - あなたがun/pwを提出すると、明らかにログインコントローラに行きます。私たちはユーザデータベースのun/pwコンボを調べる必要があるので、ユーザオブジェクトの中でそれを行うべきであるかのように感じます... $ User-> authenticate($ un、$ pw)。

私は本当か偽を返すべきですか。次に、LoginControllerはSessionオブジェクトにセッションの作成を指示する必要があります。$ session-> create()。しかし、私とは別の人がUserオブジェクトとSessionオブジェクトをニットに近づけ、コントローラに依存しないようにするのが不思議です。

ありがとうございます。このようなフレームワークのための

答えて

0

私の考え:

は、ページのロードのセッションオブジェクトを初期化し、「ゲストアカウント」をデフォルトに設定します。

このセッション初期化時に、セッションオブジェクトを(クッキーから)セッション識別子を探し、バックエンドでセッションを追跡しているかどうかを検証します。

セッションIDが検証された場合は、関連するユーザーIDを取得して、そのユーザーIDを使用してユーザーオブジェクトを作成できます。

ログイン制御は、ログインからユーザーを認証し、バックエンドでセッションIDとユーザーIDをバインドし、セッションIDをCookieに書き込むことでセッションを初期化するだけです。

...しかし、より効率的な方法は、ユーザーを一度認証し、サーバーによって設定されたデジタル署名されたCookieにユーザーIDを書き込み、クライアントから返されたすべての有効なCookieを信頼することです。これにより、セッション管理が非常に軽くなり、往復でデータベースを節約できます。

2

私の意見では、ユーザオブジェクトは永続性(セッション)またはアプリケーション(コントローラ)について知ってはいけません。気にする必要があるのは、ユーザーを表し、認証などのユーザー関連の機能を処理することだけです。

コントローラはすべてアプリケーションロジックに関するもので、セッションはアプリケーションの一部です。一度認証されると、セッションを開いて後で使用するためのユーザーオブジェクトを格納するのはコントローラータスクのようです。

p.s.あなたのフレームワークを公開しましたか?それをギタップ! :-D

+0

私はこれに同意します。私のフレームワークでは、GitHubにあります; http://github.com/apinstein/phocoa - ログインはモデルとは別です。このアプリケーションはログインを定義し、モデルに対してクレデンシャルをチェックするデリゲートを作成します。実際にはうまくいっています。ソースをチェックしてみてください。 – apinstein

+0

さて、PHPは主にウェブと関連しているので、便宜上(または再利用性)のためにいくつかの異なるものをマージする必要がありますが、それはまったく間違っているわけではありません。 – Mario

関連する問題