جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
Masoomeh
2 سال پیش توسط Masoomeh مطرح شد
6 پاسخ

تمام شدن وقت ارسال کد احراز هویت

من توی پروژه ام نیاز دارم که برای لاگین یا ثبت نام بعد ازوارد کردن شماره موبایل یه اس ام اس که شامل کد تایید هست بیاد و یک زمانی هم براش در نظر گرفته شده که وقتی زمانش تموم شه باید درخواست بده دوباره کد براش ارسال بشه
سوالی که دارم اینه که این زمان باید توی دیتابیس ذخیره بشه؟
توی خود جدول user یا یه جدول دیگه براش تعریف بشه؟


ثبت پرسش جدید
متین طیبی نیا
تخصص : nodejs
@MatinTayebi 2 سال پیش مطرح شد
0

من برای این کار از 2 جدول استفاده کردم. یکی users و active_codes .
تو جدول active_codes یک فیلد از نوع timestamp به اسم expired_at قرار دادم و با توجه به زمانی که توی اون ذخیره شده مشخص میکنم که کد اعتبار داره یا نه .
این فیلد های جدول active_codes هستش.

user_id,code,expired_at

رابطه این جدول با users رابطه یک به چند هستش یک کاربر میتونه چندین کد داشته باشه ولی یک کد فقط میتونه متعلق به یک کاربر باشه.


Meysam
تخصص : ++ C
@meysampro 2 سال پیش آپدیت شد
0

سلام در حالت کلی به صورت زیر این کار انجام می شود .
۱ . ایجاد کد اعتبار سنجی تصادفی
۲ . ارسال کد OTP به کاربربا استفاده از سرویس Api پنل sms و اضافه کردن اون به دیتابیس .
۳ . تایید کد ارسال شده به تلفن همراه کاربر و به روزرسانی وضعیت در دیتابیس .
۴ . نمایش وضعیت اعتبارسنجی پیامکی به کاربر مورد نظر .
دوست عزیز در مورد زمان باید بگم که باید تو دیتابیس ذخیره بشه بعد با جاوا اسکریپت می گیم که زمان صفر شد دوباره بیاد کد تایید ارسال کند موفق و سربلند باشید .😊


Meysam
تخصص : ++ C
@meysampro 2 سال پیش آپدیت شد
0

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


متین طیبی نیا
تخصص : nodejs
@MatinTayebi 2 سال پیش مطرح شد
0

من برای این کار از 2 جدول استفاده کردم. یکی users و active_codes .
تو جدول active_codes یک فیلد از نوع timestamp به اسم expired_at قرار دادم و با توجه به زمانی که توی اون ذخیره شده مشخص میکنم که کد اعتبار داره یا نه .
این فیلد های جدول active_codes هستش.

user_id,code,expired_at

رابطه این جدول با users رابطه یک به چند هستش یک کاربر میتونه چندین کد داشته باشه ولی یک کد فقط میتونه متعلق به یک کاربر باشه.


Masoomeh
@zafari.ma.8 2 سال پیش مطرح شد
0

هر وقت که اون کد expire شد میتونین اون سطر جدولو حذف کنید
نمیشه؟ که برای هر کاربری فقط یه کد باشه
@MatinTayebi


نوید
تخصص : برنامه نویس Go / Django
@navids 2 سال پیش مطرح شد
0

در صورتی که به سرور دسترسی دارید، پیشنهاد میکنم که کد رو توی Redis ذخیره کنید
ردیس هم پس از پایان تایم به صورت خودکار حذف خواهد کرد و نیازی به چک کردن هم ندارید


حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 2 سال پیش آپدیت شد
0

سلام
@zafari.ma.8
یک جدول لازم دارید برای نگهداری otp که شامل ستون های id , userid , code , expiredat باشه حالا زمانی که کد رو تولید می کنید همون لحظه توی ستون expiredat زمان منقضی شدنش رو هم تعریف می کنید.
می تونید نوع رابطه این مدل رو با مدل یوزر به صورت One To Many تعریف کنید.
برای بررسی معتبر بودن کد هم می تونید به صورت زیر در مدل Otp اقدام کنید تا در کنترلرها به اون دسترسی داشته باشید.

public function scopeOtp($query , $code,  $user)
    {
        return !! $user->Otp()->whereCode($code)->where('expired_at' , '>' , now())->first();
    }

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام