درود بر استاد بزرگوار.
در حال حاضر کاربران می تونند با ایمیل ثبت نام و وارد بشند و ایمیل همان یوزرنیم هست (یوزرنیم جایی نمایش داده نمیشه).
services.AddIdentity<IdentityUser, IdentityRole>(options =>
{
options.User.RequireUniqueEmail = true;
options.SignIn.RequireConfirmedEmail = true;
. . .
مشکل از زمانی شروع میشه که دارم سعی میکنم یک باکس بذارم واسه ثبت نام و ورود با موبایل. یعنی کاربر ثبت نام کنه با شماره موبایل، یک رمز برای خودش تعریف میکنه و دفعات بعدی با اون وارد میشه. (نمیخوام مانند آموزش جنابعالی یک بار رمز هر دفعه ارسال کنم و فقط یک دفعه موقع ثبت نام موبایل confirm میشه- مثل ایمیل)
سوال: الان اگه بخوام یک یوزر جدید بسازم که Username = mobile باشه و بدون ایمیل و بدون تایید ایمیل بتونه وارد بشه باید دو تا کد بالا را بذارم روی False اون موقع توی اکشن متد مربوط به ثبت نام | ورود با ایمیل به مشکل بر میخورم چون ایمیل تکراری قبول میشه و افراد با ایمیل نامعتبر وارد میشن.
به همون نسبت واسه رجیستر و ورود با موبایل مجبورم خط زیر را اضافه کنم :
services.AddIdentity<IdentityUser, IdentityRole>(options =>
{
options.SignIn.RequireConfirmedPhoneNumber = true;
. . .
که کاربران ایمیلی را به مشکل NotAllowed میندازه و از طرف دیگه نمیدونم میشه identity را مجبور به شماره موبایل یکتا کرد توی Startup.cs منظورم هست: که این یکی به روش خودتون قابل چک کردن هست
bool isUserExist = await _userManager.Users.AnyAsync(user => user.PhoneNumber == registerVM.mobile);
خواستم ببینم نظر استاد گرامی واسه مشکل فوق چیه که بیام کلا کدهای مربوطه را از Startup.cs حذف کنم و قبل از ثبت نام با موبایل موجود بودن شماره و قبل از ثبت نام با ایمیل موجود بودن ایمیل را دستی در اکشن متد رجیستر چک کنم ؟ همچنین قبل از ورود با موبایل تایید بودن شماره و قبل از ورود با ایمیل تایید بودن ایمیل را چک کنم؟؟
اگر نظرتون موافق هست ...
یا مثلا بیام موقعی که کاربر با موبایل ثبت نام میکنه براش تعرف کنم که EmailConfirmed = 1 و موقعی که کاربر با ایمیل ثبت نام میکنه برای کاربر جدید تعریف کنم phoneNumerConfirmed = 1.
نمیدونم کدام راهکار حرفه ای تر هست؟
سلام عزیز.
دستی بررسی کنید بهتر هستش به نظرم. اگر موقع ثبت نام با شماره موبایل بخواین EmailConfirmed رو true بکنید در آینده ممکنه مشکل ساز بشه براتون.
فقط حواستون باشه دارید دستی بررسی میکنید موردی رو جا نندازید و اینکه موقع بررسی ایمیل ها، ایمیل ورودی رو ToUpper بکنید و با NormalizedEmail ( اسمش ممکنه یکم فرق داشته باشه ) توی دیتابیس چک بکنید، برای یوزرنیم هم به همین شکل.
موفق باشید.