دسته بندی ها
13:22 1398/08/16

کنترل تکراری نبودن شماره موبایل در Identity

مشخصات سوال کننده :
کاربر : fateme     امتیاز کاربر : 1637     رتبه کاربر : 2
دسته بندی : Asp.net Mvc Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3536
هوش مصنوعی

پاسخ هوش مصنوعی

برای کنترل تکراری نبودن شماره تماس (PhoneNumber) در ASP.NET Core Identity، شما باید یک متد سفارشی اضافه کنید که شماره تماس را بررسی کند. برخلاف ایمیل، Identity به طور پیش فرض شماره تماس را یکتا بررسی نمی کند و شما باید این منطق را خودتان پیاده سازی کنید.

شما می توانید کد زیر را برای بررسی یکتایی شماره تماس هنگام ثبت نام استفاده کنید:

 
public async Task RegisterUser(RegisterViewModel model)
{
    var existingUser = await _userManager.Users
        .FirstOrDefaultAsync(u => u.PhoneNumber == model.PhoneNumber);
    
    if (existingUser != null)
    {
        // شماره تماس وجود دارد، خطای لازم را برگردانید
        ModelState.AddModelError("PhoneNumber", "این شماره تماس قبلاً در سیستم ثبت شده است.");
        return IdentityResult.Failed();
    }

    var user = new ApplicationUser { UserName = model.Email, Email = model.Email, PhoneNumber = model.PhoneNumber };
    return await _userManager.CreateAsync(user, model.Password);
}

با این کد، شما اول بررسی می کنید که آیا شماره تماس مورد نظر در بین کاربران موجود است یا خیر. در صورت وجود، یک خطای مناسب به مدل اضافه می شود و در غیر اینصورت کاربر ثبت نام می شود.

همچنین می توانید از این متد هر زمان که نیاز به بررسی یکتایی شماره تماس دارید، استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamid_b 01:14 1398/08/17

توی Asp.net Core و Identity به صورت پیش فرض شما نمیتونید یونیک بودن شماره موبایل رو کنترل کنید. و دستوراتی که برای ایمیل وجود داره برای شماره موبایل وجود نداره. 

اما برای کنترل تکراری نبودن شماره موبایل در Identity میتونید از قطعه کد زیر استفاده کنید.

 

bool IsPhoneAlreadyRegistered = _userManager.Users.Any(item => item.PhoneNumber == model.PhoneNumber);

البته اگر دیتابیس شما شامل میلیونها رکورد باشه یعنی شما میلیونها کاربر داشته باشید ممکنه قدری کند باشه استفاده از روش بالا ولی در حالت عادی ساده ترین و بهترین روش هست.

 

توصیه می کنم برای کسب اطلاعات بیشتر این لینک رو مطالعه بفرمایید.

به این پاسخ امتیاز بدهید    1
امتیاز: 518 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود