Yiiプロジェクトには、特定のユーザーIDを参照する必要のあるモデルが少なくとも1つあります。モデルのSQLには、のようなものがありCONSTRAINT FOREIGN KEY (user_id) REFERENCES User(id)
ます。CUserIdentityのドキュメントに出くわしたときに、先に進んでユーザーモデルを作成しようとしていました。私は混乱していることを認めなければなりません。CUserIdentityは、特定のユーザーケースに関連付けられたユーザーまたは状態ですか?組み込みのYii機能は、私が理解していることからセキュリティ関連の問題をたくさん処理するので、できるだけ多く使用したいと思いますsrbac
。また、ユーザー認証や登録管理を処理するモジュールのようなものがいくつかあることを認識しています。私を正しい方向に導いてください。(また、問題:モデルとコンポーネントの関係は何ですか?)
1 に答える
まず、先に進んでUser
モデルを作成してください。それが必要になります。
邪魔にならないように:CUserIdentity
は「ユーザーが誰であるか」という概念を表し、User
モデルは「アプリケーションのユーザーに関する情報」を表します。CUserIdentity
は、複数の種類のユーザー (つまりゲスト) がいるすべての場合に適用できますが、User
モデルは、ユーザーに関する情報を自分で保存する場合にのみ適用できます。確かに、ほとんどの場合、両方が適用可能であり、これが混乱を引き起こしています。
通常、この 2 つの関係はCUserIdentity
、「ユーザーが誰であるか」、「ユーザーはこのリソースへのアクセスを許可されているか」などの質問User
に答えるために、データベースからモデルにクエリを実行して、回答に必要な情報を取得するというものです。これらの質問。この 2 つの概念の関係は、Yii の決定版ガイドにも記載されています。たとえば、ユーザーを認証した後User
、独自のプロパティ (定義する必要がある) を介して、モデルに関する情報の一部またはすべてを公開します。
モデルが存在しないシナリオの例として、User
LDAP ユーザー アカウントを使用してログインできる Web サイトについて考えてみましょう。メソッドが呼び出されると、CUserIdentity::authenticate
コンポーネントは LDAP サーバーに対して資格情報を認証し、認証が成功すると、他の関連情報を再び取得し、独自のプロパティを通じて公開します。