MongoDBのIUserLoginStoreのカスタム実装を作成しようとしていますが、使用すると気付きました
UserManager<ApplicationUser>
メソッドで
var userResult = await _userManager.CreateAsync(user);
それはの実装を通過します
GetUserNameAsync
FindByNameAsync
SetNormalizedUserNameAsync
GetUserIdAsync
2つの質問を明確にしたいと思います。
normalizedUsernameとUserNameの目的は何ですか?私が気付いた唯一の違いは、normalizedUserNameが大文字であることです。
私は実装を使用して、外部ログイン(Google plus)からユーザーを格納するだけです。ユーザー名とNormilizedUserNameを省略できる方法はあります。基本的に、これらの3つのフィールドでメールを使用しているので、データを複製していますが、それは私には意味がありません。
何かお勧めですか?
1)正規化により、大文字と小文字のみが異なるユーザー名を登録することができなくなります。
2)いいえ-これらのフィールドは基本データモデルの一部です。
FindByNameAsync
は、大文字と小文字を区別しないu.Nameで検索する必要があります(DB設定を信頼していますか?)GetNormalizedUserNameAsync
はuser.Name.ToUpperCase()を返す必要がありますSetNormalizedUserNameAsync
は何もすべきではありません2.1はDBのname
列のインデックスをスキップし、アプリのパフォーマンスを低下させる可能性があることに注意してください(DBをもう一度確認してください)。または、「クライアント側」の実行を引き起こします(ここでも、パフォーマンスが劇的に低下します)。実装によって異なります。
このような「最小化」されたUser
クラスは、特定のOAuthプロバイダーのみを使用し、指定されたドメイン(Google Apps)からのみユーザーを受け入れる)を使用する内部エンタープライズシステムでのみ使用します。このシステムは、ユーザー名で検索すると、多くのメソッドで安全にNotImplementedException
をスローします。