あなたはユニークな電話番号を必要とする場合は、これを追加することにより、ApplicationDbContext
(またはものは何でもIdentityDbContextとして使用されているコンテキスト)でこれを行うことができますこの方法は:あなたがSPEをした場合
protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary<object, object> items)
{
if (entityEntry != null && entityEntry.State == EntityState.Added)
{
var errors = new List<DbValidationError>();
var user = entityEntry.Entity as ApplicationUser;
//check for uniqueness of phone number
if (user != null)
{
if (Users.Any(u => String.Equals(u.PhoneNumber, user.PhoneNumber)))
{
errors.Add(new DbValidationError("User",user.PhoneNumber+" is already registered."));
}
}
}
return base.ValidateEntity(entityEntry, items); //check for uniqueness of user name and email and return result
}
継承base.ValidateEntity
方法は、(ユーザー名とメールが一意であることを確認するためにチェックするものです設定でこれらのオプションが表示されます)。あなたはデータコンテキストへの直接アクセスを必要とする電話番号にアクセスするには:あなたが尋ねた正確な質問については
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Validation;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
:あなたが必要なように見えるのステートメントを使用するための
。私が知る限り、UserManager
もUserStore
でもこのようなメソッドを実装していませんが、UserStore
から継承した独自のユーザーストアクラスを定義して、そのようなメソッドを追加することはできます。
あなたのstartup.Authはどのように見えますか? OWINのコンポーネントをオーバーライドしていますか?そうでなければ、新しいカスタム 'UserStore'を作成し、' UserManager'でこれを新しいものにする必要があるでしょう。 – Liam
私はOWINを使いませんでした。あなたはUserStoreについて詳しく説明できますか? – fluter
今私はそれについて考える。なぜあなたはテーブルを直接照会しないのですか?あなたは、すべての認証コンポーネントを無効にするためにフープの負荷を乗り越えることができますが、実際にそのユーザー名が一意であるかどうかを知りたい場合は、データベースをチェックしますか? – Liam