Contents

วิธีสร้างระบบรับรองความถูกต้องทางสังคมใน Django โดยใช้ OAuth

Contents

การรับรองความถูกต้องทางสังคมเป็นวิธีหนึ่งในการยืนยันตัวตนของบุคคลผ่านบัญชีโซเชียลแทนการใช้รหัสผ่าน ในการพัฒนาเว็บ การตรวจสอบสิทธิ์ผู้ใช้โดยไม่ต้องใช้รหัสผ่านจะมีประโยชน์เสมอ ด้วยวิธีนี้ พวกเขาสามารถเข้าสู่ระบบผ่านแอปโซเชียล เช่น 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 ” ผู้ใช้มีตัวเลือกในการเปลี่ยนแปลงการตั้งค่านี้หรือสร้างเว็บไซต์ใหม่ได้หากต้องการ ในการทำเช่นนั้น พวกเขาจะต้องลงชื่อเข้าใช้บัญชีของตนและเข้าถึงแอปพลิเคชัน"ไซต์"ภายในแผงควบคุม

/th/images/add-new-site.jpg

หากต้องการดึง 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 จะปรากฏขึ้น

/th/images/url-patterns-available-in-django-allauth.jpg

เมื่อคุณทำตามขั้นตอนที่ระบุไว้ก่อนหน้านี้เรียบร้อยแล้ว ขณะนี้โครงการของคุณก็พร้อมที่จะผ่านการรับรองความถูกต้องทางสังคมแล้ว

วิธีใช้งานการเข้าสู่ระบบ/สมัครสมาชิก 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 เพื่อสร้างโปรเจ็กต์ใหม่ ขั้นแรกให้คลิกที่เมนูแบบเลื่อนลงที่แสดงในภาพด้านล่าง: /th/images/google-console-interface.jpg

⭐ จากนั้นคลิกที่ NEW PROJECT: /th/images/select-new-project.jpg

⭐ ป้อนชื่อโครงการของคุณ จากนั้นคลิกปุ่มสร้าง: /th/images/select-project-name.jpg

⭐ เมื่อเลือกโปรเจ็กต์ของคุณแล้ว ให้คลิกที่เมนูแฮมเบอร์เกอร์ เลือก API และบริการ จากนั้นเลือกข้อมูลรับรอง: /th/images/select-credentials.jpg

⭐ จากนั้นคลิกตัวเลือกที่ระบุว่า CONFIGURE CONSENT SCREEN และเลือก External: /th/images/configure-oauth-consent-screen.jpg

⭐ ในหน้าถัดไป ให้ป้อนชื่อแอปของคุณและระบุอีเมลตามที่จำเป็น คุณยังสามารถสำรวจการกำหนดค่าสำหรับการปรับแต่งบางอย่างได้ เมื่อเสร็จแล้วให้คลิกที่ SAVE AND CONTINUE /th/images/enter-app-name-and-email-for-consent-screen.jpg

⭐ ที่เมนูด้านซ้าย ให้เลือกข้อมูลประจำตัว หลังจากนั้น คลิก CREATE CREDENTIALS และเลือก OAuth client ID /th/images/select-oauth-client-id.jpg

⭐ จากนั้นเลือกประเภทแอปพลิเคชันแล้วป้อนชื่อให้เหมือนกัน สำหรับบทช่วยสอนนี้ ประเภทแอปพลิเคชันจะเป็นแอปพลิเคชันเว็บ /th/images/select-app-type-and-enter-name.jpg

⭐ ถัดไป เพิ่ม URI สำหรับต้นทาง JavaScript ที่ได้รับอนุญาต และ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต โฮสต์ของเว็บไซต์ของคุณควรเป็นจุดกำเนิดของ JavaScript และระบบจะเปลี่ยนเส้นทางผู้ใช้ไปยัง URI การเปลี่ยนเส้นทางหลังจากการตรวจสอบสิทธิ์ โดยทั่วไป URI การเปลี่ยนเส้นทางควรมี your-host-name/accounts/google/login/callback/สำหรับโหมดการพัฒนา จะเป็น: http://127.0.0.1:8000/accounts/google/login/callback/คลิกที่สร้างเมื่อเสร็จแล้ว /th/images/add-uris.jpg

⭐ หลังจากสร้างข้อมูลประจำตัวแล้ว คุณสามารถคัดลอกรหัสไคลเอ็นต์หรือรหัสลับไคลเอ็นต์ของคุณไปยังที่ปลอดภัยหรือดาวน์โหลดเป็นไฟล์ JSON /th/images/copy-credentials.jpg

ขั้นตอนที่ 3: เพิ่มรหัสลูกค้าและรหัสลับของคุณไปยังแอป Django ของคุณ

เมื่อสร้างข้อมูลรับรองการเข้าถึงที่จำเป็นแล้ว โปรดนำเว็บเบราว์เซอร์ของคุณไปที่ “ http://127.0.0.1:8000/admin ” จากนั้นคลิกที่ “แอปพลิเคชันโซเชียล” จากตัวเลือกเมนูที่มีอยู่ จากนั้น ดำเนินการเริ่มต้นการสร้างแอปพลิเคชันโซเชียลใหม่โดยปฏิบัติตามคำแนะนำต่อไปนี้ที่สรุปไว้ด้านล่าง:

เมื่อเพิ่มผู้ให้บริการการรับรองความถูกต้องรายใหม่ในแอปพลิเคชันซอฟต์แวร์ จำเป็นต้องระบุบริการที่ผู้ใช้จะได้รับอนุญาตให้เข้าถึงบัญชีของตนได้ โดยทั่วไปหน่วยงานนี้เรียกว่า"ผู้ให้บริการ"และอาจแตกต่างกันไปขึ้นอยู่กับแพลตฟอร์มที่ใช้งาน ตัวอย่างเช่น หากแอปพลิเคชันรองรับการทำงานร่วมกับข้อมูลรับรองบัญชี Google ผู้ให้บริการที่เพิ่มเข้ามาก็จะสอดคล้องกับ Google ในทำนองเดียวกัน หากแอปพลิเคชันเปิดใช้งานการเชื่อมต่อกับข้อมูลการเข้าสู่ระบบ Snapchat ผู้ให้บริการที่เลือกก็จะเกี่ยวข้องกับ Snapchat

แน่นอนว่าฉันยินดีที่จะช่วยเหลือคุณในการตั้งชื่อที่เหมาะสมและสวยงามสำหรับแอปพลิเคชันโซเชียลใหม่ของคุณ ต่อไปนี้เป็นคำแนะนำบางส่วนตามความต้องการของคุณ:1. SocialMingle-ชื่อนี้บ่งบอกว่าผู้ใช้สามารถเชื่อมต่อและพบปะกับผู้อื่นผ่านทางแพลตฟอร์ม มันติดหูและจำง่าย2. ConnectionsHub-ชื่อนี้บอกเป็นนัยว่าแอปทำหน้าที่เป็นศูนย์กลางที่ผู้คนสามารถเชื่อมต่อระหว่างกันได้ ฟังดูเป็นมืออาชีพและเชื่อถือได้3. FriendFinderX-ชื่อนี้อาจทำงานได้ดีหากแอปของคุณมุ่งเน้นที่การช่วยให้ผู้คนค้นพบเพื่อนหรือคู่รักที่มีแนวโน้มจะเป็นคู่รัก อย่างไรก็ตาม โปรดคำนึงถึงความหมายแฝงซึ่งอาจไม่เหมาะสำหรับผู้ชมทุกคน4. LinkUpNow-ชื่อนี้เน้นแนวคิดของ

กรุณาระบุความลับของลูกค้าที่ปลอดภัยและเป็นความลับที่ได้รับจาก Google ซึ่งจะใช้เป็นคีย์การเข้ารหัสสำหรับการแลกเปลี่ยนข้อมูลที่ละเอียดอ่อนของเรา

กระบวนการตรวจสอบสิทธิ์กับ Google ไม่ได้รับผลกระทบจากฟิลด์คีย์ที่ระบุ และควรละเว้น

ท้ายที่สุด ให้เลือกแพลตฟอร์มที่จะรวมเครื่องมือโซเชียลมีเดียเข้าด้วยกัน

/th/images/add-google-credentials-to-admin-panel.jpg

ขั้นตอนที่ 4: ทดสอบการรับรองความถูกต้องของ Google ของคุณ

โปรดออกจากระบบอินเทอร์เฟซผู้ดูแลระบบของคุณ จากนั้นไปที่ http://127.0.0.1:8000/accounts/login/ เมื่อมาถึงหน้านี้ คุณจะสังเกตเห็นตัวเลือกการเข้าสู่ระบบผ่าน Google

/th/images/django-allauth-sign-in-with-google.jpg

กรุณาคลิกที่ตัวเลือกข้างต้นเพื่อเปลี่ยนเส้นทางไปยังหน้าจอยินยอม เมื่อเข้าไปแล้ว โปรดเลือกบัญชีที่เหมาะสมเพื่อดำเนินการเข้าสู่ระบบต่อไป

/th/images/google-consent-screen.jpg

เมื่อเลือกบัญชีใดบัญชีหนึ่งแล้ว บัญชีหนึ่งจะถูกส่งไปยัง http://127.0.0.1:8000/accounts/profile/ (ต่อไปนี้จะเรียกว่า “ URL ปลายทาง") ซึ่งทำหน้าที่เป็นหลักฐานยืนยันการดำเนินการที่ประสบความสำเร็จของแอปพลิเคชัน นอกจากนี้ ผู้ใช้ยังสามารถพัฒนาเทมเพลตส่วนบุคคลที่แตกต่างจากชุดมาตรฐานเพื่อให้เหมาะกับความต้องการและความต้องการของตนได้ดียิ่งขึ้น

ปรับปรุงการลงทะเบียนผู้ใช้ด้วยการรับรองความถูกต้องทางสังคมใน Django

การเปิดใช้งานการรับรองความถูกต้องทางสังคมสามารถปรับปรุงประสบการณ์การลงทะเบียนผู้ใช้ภายในแอปพลิเคชันของคุณได้อย่างมาก แม้ว่าจะมีวิธีอื่นในการเปิดใช้งานการรับรองความถูกต้องใน Django แต่ก็ควรพิจารณาความเหมาะสมตามความต้องการเฉพาะของคุณอย่างรอบคอบ