Dalam panduan ini, kami akan membimbing anda melalui langkah-langkah untuk mengintegrasikan pengesahan kunci laluan ke dalam aplikasi web Python Django. Kami akan menggunakan komponen UI pertama kunci laluan Corbado, yang bersambung dengan lancar ke hujung belakang kunci laluan (termasuk pelayan WebAuthn), menjadikan proses penyepaduan mudah dan cekap.
Baca tutorial asal penuh di sini
Sebelum kita memasuki pelaksanaan, pastikan anda mempunyai pemahaman asas tentang Django, Python, HTML dan JavaScript. Kebiasaan dengan teknologi ini akan membantu anda mengikuti dengan lebih mudah.
Jika Django tidak dipasang pada mesin anda, anda boleh memasangnya dengan menjalankan arahan berikut:
pip install Django==4.2.7
Seterusnya, pasang Corbado Python SDK untuk kekunci laluan:
pip install passkeys
Sekarang, buat projek Django baharu:
django-admin startproject passkeys_demo cd passkeys_demo
Ini akan menjana direktori passkeys_demo yang mengandungi fail projek Django anda.
Dalam direktori projek anda, buat fail .env untuk menyimpan pembolehubah persekitaran. Anda memerlukan ID Projek dan rahsia API yang boleh anda perolehi daripada panel pembangun Corbado (anda perlu membuat projek Corbado dalam panel pembangun):
PROJECT_ID=your_project_id API_SECRET=your_api_secret
Pasang pakej django-environ untuk memuatkan pembolehubah ini ke dalam tetapan Django anda:
pip install django-environ
Dalam settings.py anda, import persekitaran dan konfigurasikannya untuk membaca fail .env:
import environ env = environ.Env() environ.Env.read_env() PROJECT_ID = env('PROJECT_ID') API_SECRET = env('API_SECRET')
Buat direktori templat di dalam projek passkeys_demo anda. Dalam direktori ini, cipta index.html untuk halaman log masuk dan profile.html untuk halaman profil pengguna.
index.html:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://unpkg.com/@corbado/web-js@latest/dist/bundle/index.css" /> <script src="https://unpkg.com/@corbado/web-js@latest/dist/bundle/index.js"></script> </head> <body> <script> (async () => { await Corbado.load({ projectId: "{{ PROJECT_ID }}", darkMode: "off", setShortSessionCookie: "true", }); const authElement = document.getElementById('corbado-auth'); Corbado.mountAuthUI(authElement, { onLoggedIn: () => { window.location.href = '/profile'; }, }); })(); </script> <div id="corbado-auth"></div> </body> </html> profile.html: <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://unpkg.com/@corbado/web-js@latest/dist/bundle/index.css" /> <script src="https://unpkg.com/@corbado/web-js@latest/dist/bundle/index.js"></script> </head> <body> <h2>Protected Page ?</h2> <p>User ID: {{ USER_ID }}</p> <p>Name: {{ USER_NAME }}</p> <p>Email: {{ USER_EMAIL }}</p> <div id="passkey-list"></div> <button id="logoutButton">Logout</button> <script> (async () => { await Corbado.load({ projectId: "{{ PROJECT_ID }}", darkMode: "off", }); const passkeyListElement = document.getElementById("passkey-list"); Corbado.mountPasskeyListUI(passkeyListElement); const logoutButton = document.getElementById('logoutButton'); logoutButton.addEventListener('click', function() { Corbado.logout() .then(() => { window.location.replace("/"); }) .catch(err => { console.error(err); }); }); })(); </script> </body> </html>
Dalam views.py, cipta kaedah berikut untuk memaparkan halaman log masuk dan profil:
from django.shortcuts import render, redirect from django.http import HttpResponse from corbado_python_sdk import Config, CorbadoSDK, SessionInterface, UserEntity from corbado_python_sdk.entities.session_validation_result import SessionValidationResult from corbado_python_sdk.generated.models.identifier import Identifier from passkeys_demo.settings import API_SECRET, PROJECT_ID config = Config(api_secret=API_SECRET, project_id=PROJECT_ID) sdk = CorbadoSDK(config=config) sessions = sdk.sessions identifiers = sdk.identifiers def index(request): context = {"PROJECT_ID": PROJECT_ID} return render(request, "index.html", context) def profile(request): token = request.COOKIES.get(config.short_session_cookie_name) try: if not token: raise ValueError("No token found") validation_result = sessions.get_and_validate_short_session_value(short_session=token) if validation_result.authenticated: email_identifiers = identifiers.list_all_emails_by_user_id( user_id=validation_result.user_id or "" ) user = sessions.get_current_user(short_session=token) context = { "PROJECT_ID": PROJECT_ID, "USER_ID": user.user_id, "USER_NAME": user.full_name, "USER_EMAIL": email_identifiers[0].value, } return render(request, "profile.html", context) else: return HttpResponse("You are not authenticated or have not yet confirmed your email.", status=401) except Exception as e: print(e) return redirect("/")
Konfigurasikan laluan dalam urls.py:
from django.urls import path from . import views urlpatterns = [ path("", views.index, name="index"), path("profile/", views.profile, name="profile"), path('<path:unknown_path>/', lambda request, unknown_path: redirect('/'), name='fallback') ]
Untuk memulakan aplikasi Django anda, gunakan arahan berikut:
python manage.py runserver
Lawati http://localhost:8000 dalam penyemak imbas web anda dan anda akan melihat komponen UI Corbado disepadukan dengan lancar.
Panduan ini membimbing anda melalui proses menambah pengesahan berasaskan kunci laluan pada aplikasi Django menggunakan komponen Corbado. Pendekatan ini bukan sahaja meningkatkan keselamatan dengan melaksanakan pengesahan tanpa kata laluan tetapi juga memudahkan pengurusan sesi. Untuk butiran lanjut tentang keupayaan pengurusan sesi Corbado, rujuk dokumentasi rasmi.
Atas ialah kandungan terperinci Tutorial: Integrasikan Kunci Laluan ke dalam Django (Python). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!