نحوه پیاده سازی authentication backend (CustomAuthenticationBackend)

  • محمد هادی حاجی حسینی
  • 1403/04/13
(قسمت 3) نحوه پیاده سازی  authentication backend  (CustomAuthenticationBackend)
OTP Code, CustomAuthenticationBackend, Web service REST

CustomAuthenticationBackend

مقدمه

سلام خدمت تمام دوستان عزیز وب سایت کدینگ یار در این بخش از سری بلاگ پست های پیاده سازی احرازهویت کاربر با استفاده از OtpCode به نحوه پیاده سازی  authentication backend  سفارشی میپردازیم.

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

خب اولین سوالی که شاید تا الا براتون پیش اومده این باشه که چه نیازی به کاستوم کردن authentication backend  جنگو هست؟؟
مگر authentication backend  خودش چه ایرادی داره؟؟

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

PhoneAuthenticationBackend

 خب در اولین متود ما میاییم کاربر رو بر اساس شماره تلفنی که داره از مدل custom user واکشی میکنیم( در این جا برای پرهیز از پیچیدگی فقط کاربر رو بر اساس شماره تلفن واکشی میکنیم و اگر وجود نداشت ارور does not exist رو raise میکنیم. حال شما بسته به پروژه تون میتونین پسورد کاربر رو دریافت کنین و با چک پسورد user  اونو برسی کنین که با پسورد موجود برای user تطابق داره یا خیر یا حتی میتونین کاربر رو علاوه با شماره تلفن با ایمیل هم احراز هویت کنین!)
اگر کاربری با این شماره وجود داشت اونو return  میکنیم در غیر این صورت ارور DoesNotExist رو raise و None رو برمیگردونیم.

 

در ادامه متود get_user رو ساختیم که این متود میره کاربر رو بر اساس user_id از دیتابیس واکشی میکنه و مثل متود بالا اگر کاربر وجود نداشت ارور میده.

  • در ضمن متود های این کلاس باید به صورت استاتیک تعریف بشه نه instance متود!

دلیلشم مشخصه چون این متود ها وابسته به ابجکت های این کلاس نیستن.

 

بعد پیاده سازی authentication backend خودمون میاییم اونو هم به جنگو و هم مدل user  خودمون معرفی میکنیم: 

] = AUTHNTICATION_BACKENDS 

 , "django.contrib.auth.backends.ModelBackend"

"account.backends.PhoneAuthenticationBackend"

[

   

'Backend  = 'account.backends.PhonAuthenticationBackend

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

سخن پایانی

خب ما در این مرحله اومدیم Custom Authentication Backend خودمون رو پیاده سازی کردیم و اونو به جنگو و مدلمون معرفی کردیم.

در بلاگ پست های بعدی به سراغ پیاده سازی ویو و استفاده از سرویس کاوه نگار برای ارسال Otp Code میپردازیم.

اگر فکر می کنید که ما چیزی را در این مقاله جا انداخته ایم و یا در مورد پست های بعدی ایده و یا نظری دارید، خوشحال می شویم که این مورد را با ما در میان بگذارید. تنها کافیست روی دکمه زیر کلیک کنید و پیشنهاد خود را ارسال کنید.

ارسال نظر :
این نام در کامنت ها و پروفایل عمومی شما نمایش داده خواهد شد.