למד כיצד ליצור מערכת התחברות מאובטחת עם חשבונות מדיה חברתית ב-Django באמצעות OAuth.
אימות חברתי הוא דרך לאשר את זהותו של אדם באמצעות חשבון חברתי במקום להשתמש בסיסמאות. בפיתוח אתרים, תמיד מועיל לאמת משתמשים ללא סיסמאות. בדרך זו, הם יכולים להיכנס דרך אפליקציות חברתיות כמו גוגל, טוויטר או GitHub.
הפעלת אימות חברתי היא דרך מצוינת לשפר את אבטחת האפליקציה שלך על ידי הפחתת הסיכון לפגיעויות נפוצות הקשורות לסיסמה. זה גם ישפר את חווית המשתמש של האפליקציה שלך מכיוון שהמשתמשים לא יצטרכו לזכור סיסמאות רבות.
אימות משתמש ב-Django
Django מספקת מערכת אימות ברירת מחדל למפתחים לעבוד איתה. עם זאת, מערכת אימות זו משתמשת באימות מסורתי, הכולל איסוף ידני של נתונים כגון שם המשתמש, האימייל, הסיסמה, השם הפרטי ושם המשפחה של המשתמש.
בתכנון, מערכת האימות של Django היא גנרית מאוד ואינה מספקת תכונות רבות המשמשות ברוב מערכות האימות האינטרנטי כיום. כדי להשלים זאת, תרצה להשתמש בחבילות של צד שלישי כגון django-allauth חֲבִילָה.
כיצד להפעיל OAuth ב-Django
כדי לאמת את המשתמשים שלך באמצעות OAuth ביישום Django, אתה יכול להשתמש בחבילת Django בשם django-allauth.
Django Allauth היא חבילה שמטפלת באימות, רישום, ניהול חשבונות ואימות חשבון של צד שלישי (חברתי) עבור פרויקט ה-Django שלך. השלבים הבאים ידריכו אותך לקראת הגדרת Django Allauth עבור פרויקט ה-Django שלך.
שלב 1: התקן והגדר את Django-Allauth
אם אתה עדיין צריך לעשות זאת, ליצור סביבה וירטואלית ולהתקין django-allauth דרך pip:
pip install django-allauth
שים לב שאתה חייב להשתמש ב-Python 3.5 ומעלה וב-Django 2.0 ומעלה כדי שזה יעבוד.
שלב 2: הוסף אפליקציות נדרשות ל-Django עבור Django-Allauth
לאחר ההתקנה django-allauth, פתח את settings.py קובץ והוסף את האפליקציות הבאות שלך INSTALLED_APPS רשימה:
INSTALLED_APPS = [
Add your other apps here
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
הנה כמה נקודות שכדאי לשים לב אליהן לגבי חלק מהאפליקציות לעיל:
- ה allauth.socialaccount האפליקציה תאפשר למשתמשים להיכנס דרך אפליקציות חברתיות כמו X (לשעבר טוויטר), אינסטגרם, GitHub ואחרות.
- ה django.contrib.sites האפליקציה היא מסגרת Django מובנית שנדרשת עבור django-allauth לעבוד. האפליקציה מספקת את היכולת לנהל ולהבדיל בין מספר אתרים בתוך פרויקט Django אחד. אתה יכול להבין איך זה עובד על ידי התייחסות ל תיעוד ג'נגו.
שלב 3: הגדר את הקצה האחורי של האימות עבור הפרויקט שלך
השלב הבא הוא להגדיר כיצד ברצונך לאמת את המשתמשים שלך. אתה יכול לעשות זאת על ידי הגדרת ה- AUTHENTICATION_BACKENDS אצלך settings.py קוֹבֶץ. ל django-allauth, עליך להוסיף את אלה:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
קטע הקוד שלמעלה מגדיר שני קצה קצה של אימות:
- הראשון הוא ברירת המחדל בשימוש על ידי Django. זה יאפשר למשתמש האדמין להיכנס לפאנל הניהול ללא קשר לתצורה של django-allauth.
- השני מגדיר את הקצה האחורי של האימות עבור django-allauth.
שלב 4: הוסף את מזהה האתר שלך
בקובץ ההגדרות שלך, עליך להוסיף את המזהה של האתר שלך. הנה דוגמה:
SITE_ID = 1
כברירת מחדל, יש אתר שנקרא example.com בפאנל הניהול. אתה יכול להחליט לשנות אתר זה או להוסיף אחד בעצמך. בכל מקרה, עליך להיכנס לפאנל הניהול ולנווט אל אתרים אפליקציה.
כדי לקבל את מזהה האתר עבור אתר Django, פתח את ממשק שורת פקודה (CLI) והפעל את הפקודה הזו:
python manage.py shell
לאחר מכן, כתוב את הסקריפט הזה לתוך מעטפת Python:
from django.contrib.sites.models import Site
current_site = Site.objects.get_current()
site_id = current_site.id
site_name = current_site.name
print("Site ID:", site_id)
print("Site Name:", site_name)
הקוד לעיל ידפיס את שם האתר וכן את תעודת הזהות שלו.
שלב 5: הגדר את כתובות האתרים שלך
בפרויקט שלך urls.py קובץ, הגדר את דפוס כתובת האתר עבור django-allauth. כך זה אמור להיראות:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
עם הגדרה זו, אתה יכול להפעיל את שרת הפיתוח שלך ולנווט אליו http://127.0.0.1:8000/accounts/. אם יש לך לנפות מכוון ל נָכוֹן, אתה אמור לראות רשימה של דפוסי כתובות אתרים זמינים עבורם django-allauth.
אם עשית את האמור לעיל, הפרויקט שלך אמור להיות מוכן לאימות חברתי.
כיצד ליישם את התחברות/הרשמה של Google באפליקציית Django שלך
לאחר ההגדרה django-allauth, אתה צריך להיות מוכן לאפשר למשתמשים שלך לאמת את עצמם עם החשבונות החברתיים שלהם כגון Google.
שלב 1: רשום את ספק החשבון החברתי שלך באפליקציות המותקנות שלך
אצלך settings.py קובץ, עליך להוסיף את ספק החשבון החברתי INSTALLED_APPS. במקרה הזה, זה גוגל. אפשרויות נוספות הן אינסטגרם, X וכו'.
INSTALLED_APPS = [
Add your other apps here
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
שלב 2: צור את מזהה הלקוח והמפתח הסודי שלך ב-Google
כדי להשלים שלב זה, עליך ליצור חשבון Google. אם עשית זאת, בצע את השלבים הבאים:
- פנה אל ה קונסולת Google Cloud כדי ליצור פרויקט חדש. ראשית, לחץ על התפריט הנפתח בתמונה למטה:
- לאחר מכן, לחץ על פרוייקט חדש:
- הזן שם עבור הפרויקט שלך ולאחר מכן לחץ על לִיצוֹר לַחְצָן:
- כשהפרויקט שלך נבחר, לחץ על תפריט ההמבורגרים. בחר ממשקי API ושירותים, לאחר מכן אישורים:
- לאחר מכן, לחץ על האפשרות שאומרת הגדר את מסך ההסכמה ובחר חיצוני:
- בעמוד הבא, הזן שם לאפליקציה שלך וכלול אימייל במידת הצורך. אתה יכול גם לחקור את התצורות להתאמה אישית מסוימת. לאחר שתסיים, לחץ על שמור והמשך.
- בתפריט השמאלי, בחר אישורים. לאחר מכן, לחץ על צור אישורים ובחר מזהה לקוח OAuth.
- לאחר מכן, בחר את סוג יישום והזן שם עבור אותו. עבור הדרכה זו, ה סוג יישום יהיה אפליקציית רשת.
- לאחר מכן, הוסף URI עבור מקורות JavaScript מורשים ו URI מורשים להפניה מחדש. המארח של האתר שלך צריך להיות מקור ה-JavaScript, והמערכת תפנה משתמשים ל-URI להפניה מחדש לאחר האימות. ה-URI להפניה מחדש אמור להכיל בדרך כלל your-host-name/accounts/google/login/callback/. עבור מצב פיתוח, זה יהיה: http://127.0.0.1:8000/accounts/google/login/callback/. לחץ על לִיצוֹר כשפעם אחת נעשה.
- לאחר יצירת האישורים, תוכל להעתיק את מזהה לקוח אוֹ סוד הלקוח למקום בטוח או הורד אותם כקובצי JSON.
שלב 3: הוסף את מזהה הלקוח והמפתח הסודי שלך לאפליקציית Django שלך
לאחר יצירת האישורים הדרושים, נווט אל http://127.0.0.1:8000/admin, בחר יישומים חברתיים, וליצור אפליקציה חברתית חדשה. בצע את השלבים הבאים כדי ליצור אפליקציה חברתית חדשה:
- הוסף ספק. הספק מתייחס לאפליקציה שאיתה אתה מאמת את המשתמש שלך. במקרה זה, מדובר בגוגל, ובמקרה אחר זה עשוי להיות Snapchat.
- הזן שם לאפליקציה החברתית החדשה שלך. ודא שזה שם הגיוני
- הדבק ב- מזהה לקוח העתקת מגוגל.
- בשביל ה מפתח סודי, הדבק ב סוד הלקוח העתקת מגוגל.
- ה מַפְתֵחַ השדה אינו חל על אימות עם Google, אז תתעלם ממנו.
- לבסוף, בחר אתר שאליו יש לשייך את האפליקציה החברתית.
שלב 4: בדוק את האימות של Google
צא מפאנל הניהול שלך ונווט אל http://127.0.0.1:8000/accounts/login/. תראה אפשרות להתחבר דרך Google.
לחץ עליו כדי להפנות למסך ההסכמה. לאחר מכן, בחר חשבון להתחבר איתו.
לאחר שתבחר חשבון, תועבר אל http://127.0.0.1:8000/accounts/profile/. זה אומר שהאפליקציה שלך עובדת בצורה מושלמת. אתה יכול ליצור תבניות מותאמות אישית כדי להחליף את תבניות ברירת המחדל.
שיפור רישום המשתמש עם אימות חברתי ב-Django
הפעלת אימות חברתי היא דרך מצוינת לעזור למשתמשים שלך לקבל חוויה נהדרת בהרשמה לאפליקציה שלך. ישנן דרכים אחרות לאפשר אימות ב-Django, וכדאי לחקור אותן כדי להחליט מה הכי טוב עבור מקרה השימוש שלך.