백엔드 개발 파이썬 튜토리얼 튜토리얼: Django(Python)에 패스키 통합

튜토리얼: Django(Python)에 패스키 통합

Aug 31, 2024 am 06:04 AM

소개

이 가이드에서는 Python Django 웹 애플리케이션에 암호 키 인증을 통합하는 단계를 안내합니다. 우리는 패스키 백엔드(WebAuthn 서버 포함)에 원활하게 연결되는 Corbado의 패스키 우선 UI 구성요소를 활용하여 통합 프로세스를 간단하고 효율적으로 만들 것입니다.

여기에서 전체 원본 튜토리얼을 읽어보세요

Django Passkey 프로젝트 전제 조건

구현을 시작하기 전에 Django, Python, HTML 및 JavaScript에 대한 기본적인 이해가 있는지 확인하세요. 이러한 기술에 익숙해지면 더 쉽게 따라갈 수 있습니다.

Django 프로젝트 설정

1. Django 프로젝트 초기화

Django가 컴퓨터에 설치되어 있지 않은 경우 다음 명령을 실행하여 설치할 수 있습니다.

pip install Django==4.2.7

다음으로 암호 키용 Corbado Python SDK를 설치합니다.

pip install passkeys

이제 새 Django 프로젝트를 만듭니다.

django-admin startproject passkeys_demo
cd passkeys_demo

이렇게 하면 Django 프로젝트 파일이 포함된 passkeys_demo 디렉터리가 생성됩니다.

2. 환경 변수 구성

프로젝트 디렉터리 내에서 환경 변수를 저장할 .env 파일을 만듭니다. Corbado 개발자 패널에서 얻을 수 있는 프로젝트 ID와 API 비밀번호가 필요합니다(개발자 패널에서 Corbado 프로젝트를 생성해야 함).

PROJECT_ID=your_project_id
API_SECRET=your_api_secret

django-environ 패키지를 설치하여 다음 변수를 Django 설정에 로드하세요.

pip install django-environ

settings.py에서 Environ을 가져오고 .env 파일을 읽도록 구성합니다.

import environ

env = environ.Env()
environ.Env.read_env()

PROJECT_ID = env('PROJECT_ID')
API_SECRET = env('API_SECRET')

3. 세션 관리로 Django 템플릿 생성

passkeys_demo 프로젝트 내에 템플릿 디렉터리를 만듭니다. 이 디렉토리 내에서 로그인 페이지용 index.html과 사용자 프로필 페이지용 profile.html을 생성합니다.

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>

4. Django 뷰 생성 및 경로 구성

views.py에서 로그인 및 프로필 페이지를 렌더링하기 위한 다음 메서드를 만듭니다.

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("/")

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')
]

Django 애플리케이션 실행

Django 애플리케이션을 시작하려면 다음 명령을 사용하세요.

python manage.py runserver

웹 브라우저에서 http://localhost:8000을 방문하면 Corbado UI 구성요소가 원활하게 통합된 것을 볼 수 있습니다.

Tutorial: Integrate Passkeys into Django (Python)

결론

이 가이드에서는 Corbado의 구성 요소를 사용하여 Django 애플리케이션에 암호 키 기반 인증을 추가하는 과정을 안내했습니다. 이 접근 방식은 비밀번호 없는 인증을 구현하여 보안을 강화할 뿐만 아니라 세션 관리도 단순화합니다. Corbado의 세션 관리 기능에 대한 자세한 내용은 공식 문서를 참조하세요.

위 내용은 튜토리얼: Django(Python)에 패스키 통합의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Stock Market GPT

Stock Market GPT

더 현명한 결정을 위한 AI 기반 투자 연구

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

Python에서 요구 사항에서 패키지를 설치하는 방법 Python에서 요구 사항에서 패키지를 설치하는 방법 Sep 18, 2025 am 04:24 AM

종속성 패키지를 설치하려면 pipinstall-rrequirements.txt를 실행하십시오. 충돌을 피하고, 파일 경로가 올바른지 확인하고 PIP가 업데이트되었는지 확인하고 필요한 경우 설치 동작을 조정하기 위해-no-deps 또는 --user와 같은 옵션을 사용하는 것이 좋습니다.

PEFT LORA 어댑터 및 기본 모델의 효율적인 병합 전략 PEFT LORA 어댑터 및 기본 모델의 효율적인 병합 전략 Sep 19, 2025 pm 05:12 PM

이 튜토리얼은 PEFT LORA 어댑터를 기본 모델과 효율적으로 병합하여 완전히 독립적 인 모델을 생성하는 방법을 자세히 설명합니다. 이 기사는 변압기를 직접 사용하는 것이 잘못되었음을 지적합니다. Aumodel은 어댑터를로드하고 가중치를 수동으로 병합하고 PEFT 라이브러리에서 MERGE_AND_UNLOAD 방법을 사용하는 올바른 프로세스를 제공합니다. 또한 튜토리얼은 워드 세그먼트를 다루는 것의 중요성을 강조하고 PEFT 버전 호환성 문제 및 솔루션에 대해 설명합니다.

Pytest로 Python 코드를 테스트하는 방법 Pytest로 Python 코드를 테스트하는 방법 Sep 20, 2025 am 12:35 AM

Python은 Python의 간단하고 강력한 테스트 도구입니다. 설치 후 테스트 파일은 이름 지정 규칙에 따라 자동으로 발견됩니다. 어설 션 테스트를 위해 test_로 시작하여 기능을 작성하고 @pytest.fixture를 사용하여 재사용 가능한 테스트 데이터를 생성하고 pytest.raises를 통해 예외를 확인하고 지정된 테스트 실행 및 여러 명령 줄 옵션을 지원하며 테스트 효율성을 향상시킵니다.

파이썬에서 명령 줄 인수를 처리하는 방법 파이썬에서 명령 줄 인수를 처리하는 방법 Sep 21, 2025 am 03:49 AM

theargparsemoduleisecomedendedway handlecommand-lineargumentsinpython, robustparsing, typevalidation, helpmessages, anderrorhandling; audys.argvforsimplecaseSrequiringMinimalSetup을 제공합니다.

파이썬 및 고정밀 계산 체계의 부동 소수점 번호 정확도 문제 파이썬 및 고정밀 계산 체계의 부동 소수점 번호 정확도 문제 Sep 19, 2025 pm 05:57 PM

이 기사는 Python과 Numpy의 부동 소수점 수의 부동 소수 계산 정확도의 일반적인 문제를 탐색하는 것을 목표로하며, 근본 원인은 표준 64 비트 플로팅 포인트 수의 표현 제한에 있다고 설명합니다. 더 높은 정확도가 필요한 컴퓨팅 시나리오의 경우,이 기사는 독자가 복잡한 정확도 요구를 해결하기위한 올바른 도구를 선택할 수 있도록 MPMATH, Sympy 및 GMPY와 같은 고정밀 수학 라이브러리의 사용 방법, 기능 및 해당 시나리오를 소개하고 비교합니다.

Python에서 PDF 파일을 사용하는 방법 Python에서 PDF 파일을 사용하는 방법 Sep 20, 2025 am 04:44 AM

PYPDF2, PDFPLAMBER 및 FPDF는 Python이 PDF를 처리하기위한 핵심 라이브러리입니다. PYPDF2를 사용하여 PDFREADER를 통해 페이지를 읽고 extract_text ()를 호출하려면 텍스트 추출, 병합, 분할 및 암호화를 수행하십시오. PDFPlumber는 레이아웃 텍스트 추출 및 테이블 인식을 유지하는 데 더 적합하며 TABLE 데이터를 정확하게 캡처하기 위해 Extract_Tables ()를 지원합니다. FPDF (권장 FPDF2)는 PDF를 생성하는 데 사용되며 문서는 add_page (), set_font () 및 cell ()을 통해 구축 및 출력됩니다. pdfs를 병합 할 때 pdfwriter의 append () 메소드는 여러 파일을 통합 할 수 있습니다.

Python에서 @ContextManager 데코레이터를 사용하여 컨텍스트 관리자를 어떻게 만들 수 있습니까? Python에서 @ContextManager 데코레이터를 사용하여 컨텍스트 관리자를 어떻게 만들 수 있습니까? Sep 20, 2025 am 04:50 AM

import@contextManagerFromContextLibandDefineAgeneratorFunctionThatYieldSActlyOnce, whereCodeBeforeYieldActSasEnterAndErandCodeftertyield (바람직하게는) ACTSAS__EXIT __

파이썬은 현재 시간 예제를 얻습니다 파이썬은 현재 시간 예제를 얻습니다 Sep 15, 2025 am 02:32 AM

현재 시간을 얻는 것은 DateTime 모듈을 통해 Python에서 구현할 수 있습니다. 1. DateTime.now ()를 사용하여 로컬 현재 시간을 얻으십시오. utcnow () 및 일일 작업은 Datetime.now ()를 형식의 문자열과 결합하여 요구를 충족시킬 수 있습니다.

See all articles