วิธีสร้างระบบรับรองความถูกต้องทางสังคมใน Django โดยใช้ OAuth
การรับรองความถูกต้องทางสังคมเป็นวิธีหนึ่งในการยืนยันตัวตนของบุคคลผ่านบัญชีโซเชียลแทนการใช้รหัสผ่าน ในการพัฒนาเว็บ การตรวจสอบสิทธิ์ผู้ใช้โดยไม่ต้องใช้รหัสผ่านจะมีประโยชน์เสมอ ด้วยวิธีนี้ พวกเขาสามารถเข้าสู่ระบบผ่านแอปโซเชียล เช่น Google, Twitter หรือ GitHub
การรับรองความถูกต้องทางโซเชียลสามารถช่วยเพิ่มความปลอดภัยและความสมบูรณ์ของแอปพลิเคชันได้อย่างมาก โดยลดความไวต่อจุดอ่อนที่เน้นรหัสผ่านเป็นศูนย์กลางในวงกว้าง ในขณะเดียวกันก็ช่วยปรับปรุงประสบการณ์ของผู้ใช้ปลายทางไปพร้อมๆ กัน ผ่านการขจัดภาระในการเรียกคืนข้อมูลรับรองการเข้าสู่ระบบหลายรายการ
การตรวจสอบสิทธิ์ผู้ใช้ใน Django
Django นำเสนอกลไกการตรวจสอบสิทธิ์ในตัวที่อำนวยความสะดวกในการทำงานร่วมกันอย่างราบรื่นระหว่างนักพัฒนา อย่างไรก็ตาม ใช้การรับรองความถูกต้องแบบเดิม โดยจำเป็นต้องป้อนข้อมูลด้วยตนเอง รวมถึงชื่อผู้ใช้ อีเมล รหัสผ่าน ชื่อ และนามสกุลจากผู้ใช้
ระบบการตรวจสอบความถูกต้องเริ่มต้นของ Django มีโครงสร้างพื้นฐานที่ขาดคุณสมบัติขั้นสูงหลายประการที่มักพบในกรอบการตรวจสอบความถูกต้องของเว็บร่วมสมัย ดังนั้นจึงขอแนะนำอย่างยิ่งให้รวมส่วนประกอบเพิ่มเติม เช่น ไลบรารี django-allauth ซึ่งสามารถเสริมและปรับปรุงฟังก์ชันการทำงานได้
วิธีเปิดใช้งาน OAuth ใน Django
ในการตรวจสอบการตรวจสอบสิทธิ์ผู้ใช้ภายในโปรเจ็กต์ Django โดยใช้โปรโตคอล OAuth เราอาจใช้ไลบรารี Django ที่เรียกว่า “django-allauth
Django Allauth เป็นอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันที่ออกแบบมาเพื่อปรับปรุงกระบวนการตรวจสอบสิทธิ์ผู้ใช้ การลงทะเบียน และการจัดการบัญชีภายในเฟรมเวิร์กการพัฒนาเว็บ Django หากต้องการสร้างฟังก์ชันนี้ในโปรเจ็กต์ Django ของคุณ ให้ปฏิบัติตามชุดคำแนะนำที่ครอบคลุมด้านล่าง
ขั้นตอนที่ 1: ติดตั้งและตั้งค่า Django-Allauth
หากคุณยังไม่ได้ดำเนินการดังกล่าว ขอแนะนำให้คุณสร้างสภาพแวดล้อมเสมือนและติดตั้ง django-allauth โดยใช้ pip สิ่งนี้จะช่วยให้สามารถรวม allauth เข้ากับโปรเจ็กต์ Django ของคุณได้
pip install django-allauth
โปรดทราบว่าฟีเจอร์นี้ใช้งานได้กับ Python เวอร์ชัน 3.5 ขึ้นไปเท่านั้น รวมถึงเฟรมเวิร์ก Django เวอร์ชัน 2.0 ขึ้นไป
ขั้นตอนที่ 2: เพิ่มแอปที่จำเป็นลงใน Django สำหรับ Django-Allauth
หลังจากการติดตั้งไลบรารี’django-allauth’จำเป็นต้องแก้ไขไฟล์การกำหนดค่าในโครงการโดยเพิ่มรายการแอปพลิเคชันภายในพารามิเตอร์"INSTALLED\_APPS"ที่อยู่ในไฟล์"settings.py"โดยเฉพาะอย่างยิ่ง จะต้องระบุชื่อของแอปพลิเคชันตลอดจนการอ้างอิงเพิ่มเติมที่อาจจำเป็นสำหรับการทำงานที่เหมาะสม
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
ควรคำนึงถึงข้อควรพิจารณาที่สำคัญหลายประการเกี่ยวกับแอปพลิเคชันที่กล่าวมาข้างต้น รวมถึงคุณสมบัติและความสามารถด้วย
แอปพลิเคชัน allauth.socialaccount อำนวยความสะดวกในการรับรองความถูกต้องของผู้ใช้ผ่านแพลตฟอร์มโซเชียลต่างๆ รวมถึงแต่ไม่จำกัดเพียง X (ก่อนหน้านี้เรียกว่า Twitter), Instagram และ GitHub
⭐ แอป django.contrib.sites เป็นเฟรมเวิร์ก Django ในตัวที่จำเป็นสำหรับ django-allauth ในการทำงาน แอปนี้ให้ความสามารถในการจัดการและแยกความแตกต่างหลายไซต์ภายในโปรเจ็กต์ Django เดียว คุณสามารถเข้าใจวิธีการทำงานได้โดยอ้างอิงจาก เอกสารประกอบของ Django
ขั้นตอนที่ 3: กำหนดแบ็กเอนด์การรับรองความถูกต้องสำหรับโครงการของคุณ
ในการสร้างระบบการตรวจสอบผู้ใช้ จำเป็นต้องระบุวิธีการตรวจสอบที่ต้องการสำหรับผู้ใช้ ซึ่งสามารถทำได้โดยการปรับการกำหนดค่าของ AUTHENTICATION\_BACKENDS ภายในไฟล์ settings.py โดยเฉพาะสำหรับผู้ที่ใช้ไลบรารี django-allauth แนะนำให้รวมส่วนประกอบที่กล่าวมาข้างต้นเข้าด้วยกัน
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
รหัสที่ให้มาจะกำหนดกรอบการทำงานสำหรับการดำเนินการและการใช้กลไกการตรวจสอบสิทธิ์หลายรายการภายในแอปพลิเคชัน โดยการกำหนดและกำหนดค่าองค์ประกอบแบ็กเอนด์ที่แตกต่างกันสองรายการ ได้แก่ “LOCAL” และ “REMOTE” ซึ่งทำหน้าที่เป็นพื้นฐานสำหรับจัดการคำขอตรวจสอบสิทธิ์ผู้ใช้ แบ็กเอนด์เหล่านี้ได้รับการออกแบบมาให้รวมเข้ากับเฟรมเวิร์กและบริการส่วนหน้าต่างๆ ได้อย่างง่ายดาย ช่วยให้นักพัฒนาสามารถรวมตัวเลือกการรับรองความถูกต้องที่ยืดหยุ่นและปลอดภัยในแอปพลิเคชันของตนได้อย่างราบรื่น
การตั้งค่าเริ่มต้นคือตัวเลือกมาตรฐานที่ Django ใช้งาน ซึ่งให้สิทธิ์ผู้ดูแลระบบในการเข้าถึงแดชบอร์ดของผู้ดูแลระบบ โดยไม่คำนึงถึงการกำหนดค่าใดๆ ที่ทำผ่าน django-allauth
Django-Allauth แอปพลิเคชัน Django ที่เพิ่มความคล่องตัวในการลงทะเบียนผู้ใช้และการเข้าสู่ระบบในหลายบัญชีผ่านบริการของบุคคลที่สาม เช่น ผู้ให้บริการอีเมล/OAuth2 จำเป็นต้องมีแบ็กเอนด์การตรวจสอบสิทธิ์เพื่อให้ทำงานได้อย่างมีประสิทธิภาพ
ขั้นตอนที่ 4: เพิ่มรหัสไซต์ของคุณ
เพื่อกำหนดค่าเว็บไซต์ของคุณอย่างถูกต้อง จำเป็นต้องรวมตัวระบุเฉพาะที่เรียกว่ารหัสไซต์ไว้ในไฟล์การตั้งค่าของคุณ ตามภาพประกอบ ข้อมูลโค้ดต่อไปนี้แสดงให้เห็นว่าสามารถทำได้อย่างไร:
SITE_ID = 1
การกำหนดค่าเริ่มต้นของแดชบอร์ดการดูแลระบบจะมีรายการสำหรับ “ http://example.com ” ผู้ใช้มีตัวเลือกในการเปลี่ยนแปลงการตั้งค่านี้หรือสร้างเว็บไซต์ใหม่ได้หากต้องการ ในการทำเช่นนั้น พวกเขาจะต้องลงชื่อเข้าใช้บัญชีของตนและเข้าถึงแอปพลิเคชัน"ไซต์"ภายในแผงควบคุม
หากต้องการดึง ID ไซต์ที่เกี่ยวข้องกับไซต์ Django เฉพาะโดยใช้อินเทอร์เฟซบรรทัดคำสั่ง ให้ทำตามขั้นตอนเหล่านี้:1. เปิดพรอมต์คำสั่งหรือเทอร์มินัลบนคอมพิวเตอร์ของคุณ2. นำทางไปยังไดเร็กทอรีที่คุณติดตั้ง Django framework3. เรียกใช้คำสั่งต่อไปนี้ใน CLI:csspython Manage.py sites –output=fields site_id {your-site-name}แทนที่ {your-site-name}
ด้วยชื่อของไซต์ Django เฉพาะที่คุณต้องการรับ บัตรประจำตัวประชาชน คำสั่งการจัดการ sites
จะสร้างไฟล์ JSON ที่มีข้อมูลเกี่ยวกับไซต์ทั้งหมดที่กำหนดค่าไว้ภายในโปรเจ็กต์ Django ของคุณ รวมถึง ID ที่เกี่ยวข้องด้วย
python manage.py shell
แน่นอนว่าในการรันสคริปต์ดังกล่าวในล่าม Python จะต้องเปิดมันก่อนแล้วจึงป้อนโค้ด กระบวนการนี้สามารถทำได้โดยใช้สภาพแวดล้อมการพัฒนาแบบรวม (IDE) หรืออินเทอร์เฟซบรรทัดคำสั่ง (CLI)
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: กำหนดค่า URL ของคุณ
เพื่อรวม Django Allauth ในการกำหนดค่า URL ของโปรเจ็กต์ของคุณ คุณต้องตรวจสอบให้แน่ใจก่อนว่ามีไฟล์’urls.py’อยู่ในไดเร็กทอรีโปรเจ็กต์ของคุณ ถ้าไม่ ให้สร้างขึ้นใหม่และเพิ่มข้อมูลโค้ดที่จำเป็นดังที่แสดงด้านล่าง:pythonfrom django.urls import pathfrom allauth.account.views import SignUpView, SignInViewapp_name=‘myproject’# แทนที่ด้วยชื่อโปรเจ็กต์ของคุณ urlpatterns=[path(‘signup/’, SignUpView.as_view(), name=‘signup’),path(’login/’, SignInView.as_view(), name=‘login’)]อย่าลืมแทนที่ 'myproject'
ด้วยชื่อจริงของโปรเจ็กต์ของคุณ และ รวมรูปแบบ URL ที่จำเป็นเพิ่มเติมหากจำเป็น
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
การใช้การกำหนดค่านี้ทำให้คุณสามารถเปิดเซิร์ฟเวอร์การพัฒนาของคุณและเข้าถึง http://127.0.0.1:8000/accounts/ ในเว็บเบราว์เซอร์ของคุณ เมื่อตั้งค่า"DEBUG"เป็น"True"รูปแบบ URL ที่มีอยู่ของ Django Allauth จะปรากฏขึ้น
เมื่อคุณทำตามขั้นตอนที่ระบุไว้ก่อนหน้านี้เรียบร้อยแล้ว ขณะนี้โครงการของคุณก็พร้อมที่จะผ่านการรับรองความถูกต้องทางสังคมแล้ว
วิธีใช้งานการเข้าสู่ระบบ/สมัครสมาชิก Google ในแอป Django ของคุณ
หลังจากการติดตั้งและกำหนดค่า Django-Allauth ผู้ใช้จะสามารถตรวจสอบสิทธิ์ตนเองโดยใช้บัญชีโซเชียลมีเดียของตน รวมถึงบัญชีที่ Google มอบให้ด้วย
ขั้นตอนที่ 1: ลงทะเบียนผู้ให้บริการบัญชีโซเชียลของคุณในแอพที่ติดตั้งของคุณ
เพื่อรวมบัญชีโซเชียลมีเดียไว้ในการตั้งค่าแอปพลิเคชันของคุณ จำเป็นต้องรวมแพลตฟอร์มโซเชียลมีเดียเฉพาะเป็นแอปที่ติดตั้งภายในรายการ’INSTALLED\_APPS’ที่อยู่ภายในไฟล์’settings.py’ของโครงการของคุณ ตัวอย่างเช่น หากคุณต้องการรวม Google คุณก็เพียงแค่เพิ่ม"Google"ลงในรายการแอปที่ติดตั้ง ในทำนองเดียวกัน แพลตฟอร์มโซเชียลอื่นๆ เช่น Instagram หรือ X ก็สามารถเพิ่มลงในรายการนี้ได้โดยการใส่ชื่อที่เกี่ยวข้อง
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
ขั้นตอนที่ 2: สร้างรหัสลูกค้าและรหัสลับของคุณบน Google
เพื่อให้ดำเนินงานนี้ต่อไปได้สำเร็จ คุณจะต้องมีบัญชี Google ที่ถูกต้อง ในกรณีที่คุณมีการตั้งค่าหนึ่งรายการแล้ว โปรดดูคำแนะนำต่อไปนี้:
⭐ ไปที่ Google Cloud console เพื่อสร้างโปรเจ็กต์ใหม่ ขั้นแรกให้คลิกที่เมนูแบบเลื่อนลงที่แสดงในภาพด้านล่าง:
⭐ จากนั้นคลิกที่ NEW PROJECT:
⭐ ป้อนชื่อโครงการของคุณ จากนั้นคลิกปุ่มสร้าง:
⭐ เมื่อเลือกโปรเจ็กต์ของคุณแล้ว ให้คลิกที่เมนูแฮมเบอร์เกอร์ เลือก API และบริการ จากนั้นเลือกข้อมูลรับรอง:
⭐ จากนั้นคลิกตัวเลือกที่ระบุว่า CONFIGURE CONSENT SCREEN และเลือก External:
⭐ ในหน้าถัดไป ให้ป้อนชื่อแอปของคุณและระบุอีเมลตามที่จำเป็น คุณยังสามารถสำรวจการกำหนดค่าสำหรับการปรับแต่งบางอย่างได้ เมื่อเสร็จแล้วให้คลิกที่ SAVE AND CONTINUE
⭐ ที่เมนูด้านซ้าย ให้เลือกข้อมูลประจำตัว หลังจากนั้น คลิก CREATE CREDENTIALS และเลือก OAuth client ID
⭐ จากนั้นเลือกประเภทแอปพลิเคชันแล้วป้อนชื่อให้เหมือนกัน สำหรับบทช่วยสอนนี้ ประเภทแอปพลิเคชันจะเป็นแอปพลิเคชันเว็บ
⭐ ถัดไป เพิ่ม 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 ” จากนั้นคลิกที่ “แอปพลิเคชันโซเชียล” จากตัวเลือกเมนูที่มีอยู่ จากนั้น ดำเนินการเริ่มต้นการสร้างแอปพลิเคชันโซเชียลใหม่โดยปฏิบัติตามคำแนะนำต่อไปนี้ที่สรุปไว้ด้านล่าง:
เมื่อเพิ่มผู้ให้บริการการรับรองความถูกต้องรายใหม่ในแอปพลิเคชันซอฟต์แวร์ จำเป็นต้องระบุบริการที่ผู้ใช้จะได้รับอนุญาตให้เข้าถึงบัญชีของตนได้ โดยทั่วไปหน่วยงานนี้เรียกว่า"ผู้ให้บริการ"และอาจแตกต่างกันไปขึ้นอยู่กับแพลตฟอร์มที่ใช้งาน ตัวอย่างเช่น หากแอปพลิเคชันรองรับการทำงานร่วมกับข้อมูลรับรองบัญชี Google ผู้ให้บริการที่เพิ่มเข้ามาก็จะสอดคล้องกับ Google ในทำนองเดียวกัน หากแอปพลิเคชันเปิดใช้งานการเชื่อมต่อกับข้อมูลการเข้าสู่ระบบ Snapchat ผู้ให้บริการที่เลือกก็จะเกี่ยวข้องกับ Snapchat
แน่นอนว่าฉันยินดีที่จะช่วยเหลือคุณในการตั้งชื่อที่เหมาะสมและสวยงามสำหรับแอปพลิเคชันโซเชียลใหม่ของคุณ ต่อไปนี้เป็นคำแนะนำบางส่วนตามความต้องการของคุณ:1. SocialMingle-ชื่อนี้บ่งบอกว่าผู้ใช้สามารถเชื่อมต่อและพบปะกับผู้อื่นผ่านทางแพลตฟอร์ม มันติดหูและจำง่าย2. ConnectionsHub-ชื่อนี้บอกเป็นนัยว่าแอปทำหน้าที่เป็นศูนย์กลางที่ผู้คนสามารถเชื่อมต่อระหว่างกันได้ ฟังดูเป็นมืออาชีพและเชื่อถือได้3. FriendFinderX-ชื่อนี้อาจทำงานได้ดีหากแอปของคุณมุ่งเน้นที่การช่วยให้ผู้คนค้นพบเพื่อนหรือคู่รักที่มีแนวโน้มจะเป็นคู่รัก อย่างไรก็ตาม โปรดคำนึงถึงความหมายแฝงซึ่งอาจไม่เหมาะสำหรับผู้ชมทุกคน4. LinkUpNow-ชื่อนี้เน้นแนวคิดของ
กรุณาระบุความลับของลูกค้าที่ปลอดภัยและเป็นความลับที่ได้รับจาก Google ซึ่งจะใช้เป็นคีย์การเข้ารหัสสำหรับการแลกเปลี่ยนข้อมูลที่ละเอียดอ่อนของเรา
กระบวนการตรวจสอบสิทธิ์กับ Google ไม่ได้รับผลกระทบจากฟิลด์คีย์ที่ระบุ และควรละเว้น
ท้ายที่สุด ให้เลือกแพลตฟอร์มที่จะรวมเครื่องมือโซเชียลมีเดียเข้าด้วยกัน
ขั้นตอนที่ 4: ทดสอบการรับรองความถูกต้องของ Google ของคุณ
โปรดออกจากระบบอินเทอร์เฟซผู้ดูแลระบบของคุณ จากนั้นไปที่ http://127.0.0.1:8000/accounts/login/ เมื่อมาถึงหน้านี้ คุณจะสังเกตเห็นตัวเลือกการเข้าสู่ระบบผ่าน Google
กรุณาคลิกที่ตัวเลือกข้างต้นเพื่อเปลี่ยนเส้นทางไปยังหน้าจอยินยอม เมื่อเข้าไปแล้ว โปรดเลือกบัญชีที่เหมาะสมเพื่อดำเนินการเข้าสู่ระบบต่อไป
เมื่อเลือกบัญชีใดบัญชีหนึ่งแล้ว บัญชีหนึ่งจะถูกส่งไปยัง http://127.0.0.1:8000/accounts/profile/ (ต่อไปนี้จะเรียกว่า “ URL ปลายทาง") ซึ่งทำหน้าที่เป็นหลักฐานยืนยันการดำเนินการที่ประสบความสำเร็จของแอปพลิเคชัน นอกจากนี้ ผู้ใช้ยังสามารถพัฒนาเทมเพลตส่วนบุคคลที่แตกต่างจากชุดมาตรฐานเพื่อให้เหมาะกับความต้องการและความต้องการของตนได้ดียิ่งขึ้น
ปรับปรุงการลงทะเบียนผู้ใช้ด้วยการรับรองความถูกต้องทางสังคมใน Django
การเปิดใช้งานการรับรองความถูกต้องทางสังคมสามารถปรับปรุงประสบการณ์การลงทะเบียนผู้ใช้ภายในแอปพลิเคชันของคุณได้อย่างมาก แม้ว่าจะมีวิธีอื่นในการเปิดใช้งานการรับรองความถูกต้องใน Django แต่ก็ควรพิจารณาความเหมาะสมตามความต้องการเฉพาะของคุณอย่างรอบคอบ