私が理解するところでは、懸念の分離を維持する必要があります。同じコンテキストを共有していないテーブル間には、決して関係を持たないようにしてください。つまり、Carsは決してAspNetUsersにリンクできません。
これは、オブジェクトとフィールドの意味についてです。たとえば、IdentityUserとCustomUserは等しいと思われますが、そうではありません。 IdentityUserには、CustomUserがカスタムモデルに必要なすべての情報を持つ場所としてユーザーを識別するために必要なすべての情報があります。実際、ログインアカウントを持たないCustomUsersを持つことができます。
また、emailaddressも考慮してください。両方のコンテキストでこのフィールドを使用するのは冗長なようですが、実際に自分のGoogleアカウントを使用してログインしてカスタムメールアドレスの更新情報を受け取ることができます。
したがって、CreatedByフィールドの意味は何ですか?また、どのように使用する予定ですか?カスタム・コンテキストの一部(レポート用など)の場合は、CustomUser表があり、その表に関連する必要があります。管理目的でこれをチェックしたいのであれば、ユーザ名を保存するだけで十分でしょう。あなたはそのフィールドで質問しますか? CustomUserAddressのような追加情報が必要ですか?
うまくいけば、実際には重複フィールドはないと思います。彼らはすべて目的と意味が異なるためです。
いずれにしても、あなたは文脈を超えて関係することを望んでいません。そして、別のコンテキストから情報を取得するために、idのリストを送信してしまうことを望んでいません。
問題は、現在のユーザーをリンクすることです。識別トークンは、ユーザーを識別するために使用されます。これはあなたのリソースに何も意味しません。しかし、アクセストークンには、リソース内の実際のユーザーに関する情報が含まれています。
リソースに近い権限を保持することで、CustomUserIdを使用して承認ユーザーを拡張できます。アクセストークンにこの情報を追加します。アクセストークンは認証の一部であるためです。ユーザーに指定されたユーザーのデータにしかアクセスできないことをリソースに通知します。
[アクセストークン] .customUserIdを使用すると、CustomUserと一致させることができます。したがって、CreatedByはCustomUser.Idの値を持つ必要があります。
また、私はこの記事をお勧めしたいと思います:https://leastprivilege.com/2016/12/16/identity-vs-permissions/
だから、2つのコンテキスト、アイデンティティのための1とカスタムテーブルのための1つを持っていますか?データベース内のユーザーテーブルを使用すると、AspNetUsersテーブルを意味しますか?カスタムコンテキストにusersテーブルもありますか? –
はい私はカスタムコンテキストでユーザーテーブルを持っていますが、カスタムテーブルとリンクする必要があるので追加しました。私は何とか重複なく1つの場所に保持したいだけです。私の言っていることが分かるよね。 AspNetUsersテーブルとの接続を持つカスタムテーブルカーを作成する場合は、リンクを作成する必要がありますか、汎用フィールドCreatedByを作成し、User.Identity.Nameでそのカスタムテーブルをクレームで記入し、私はちょうど車のテーブルUSERIDを取得し、そのUSERIDでaspnetUsersを照会すると、AspNetUsersでいくつかの車を作成gueryしたいですか?分かりますか? –