CustomAuthenticationBackend
سلام خدمت تمام دوستان عزیز وب سایت کدینگ یار در این بخش از سری بلاگ پست های پیاده سازی احرازهویت کاربر با استفاده از OtpCode به نحوه پیاده سازی authentication backend سفارشی میپردازیم.
خب اولین سوالی که شاید تا الا براتون پیش اومده این باشه که چه نیازی به کاستوم کردن authentication backend جنگو هست؟؟
مگر authentication backend خودش چه ایرادی داره؟؟
خب در جواب این سوالات باید بگم که وقتی ما قراره بیاییم کاربر برو بر اساس چیزی غیر از username (یعنی فیلدی که جنگو باهاش به صورت پیش فرض کاربر هارو احراز میکنه )، احراز کنیم باید بیاییم Authentication backend رو کاستوم کنیم!

خب در اولین متود ما میاییم کاربر رو بر اساس شماره تلفنی که داره از مدل custom user واکشی میکنیم( در این جا برای پرهیز از پیچیدگی فقط کاربر رو بر اساس شماره تلفن واکشی میکنیم و اگر وجود نداشت ارور does not exist رو raise میکنیم. حال شما بسته به پروژه تون میتونین پسورد کاربر رو دریافت کنین و با چک پسورد user اونو برسی کنین که با پسورد موجود برای user تطابق داره یا خیر یا حتی میتونین کاربر رو علاوه با شماره تلفن با ایمیل هم احراز هویت کنین!)
اگر کاربری با این شماره وجود داشت اونو return میکنیم در غیر این صورت ارور DoesNotExist رو raise و None رو برمیگردونیم.
در ادامه متود get_user رو ساختیم که این متود میره کاربر رو بر اساس user_id از دیتابیس واکشی میکنه و مثل متود بالا اگر کاربر وجود نداشت ارور میده.
دلیلشم مشخصه چون این متود ها وابسته به ابجکت های این کلاس نیستن.
بعد پیاده سازی authentication backend خودمون میاییم اونو هم به جنگو و هم مدل user خودمون معرفی میکنیم:
] = AUTHNTICATION_BACKENDS
, "django.contrib.auth.backends.ModelBackend"
"account.backends.PhoneAuthenticationBackend"
[
'Backend = 'account.backends.PhonAuthenticationBackend
در نهایت اگر تمام موارد رو به درستی انجام داده باشین بعد از ساخت یک کاربر به راحتی میتونین با شماره تلفن و پسوردتون وارد پنل ادمین بشین.
خب ما در این مرحله اومدیم Custom Authentication Backend خودمون رو پیاده سازی کردیم و اونو به جنگو و مدلمون معرفی کردیم.
در بلاگ پست های بعدی به سراغ پیاده سازی ویو و استفاده از سرویس کاوه نگار برای ارسال Otp Code میپردازیم.
اگر فکر می کنید که ما چیزی را در این مقاله جا انداخته ایم و یا در مورد پست های بعدی ایده و یا نظری دارید، خوشحال می شویم که این مورد را با ما در میان بگذارید. تنها کافیست روی دکمه زیر کلیک کنید و پیشنهاد خود را ارسال کنید.