Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyfackit — Email OTP (2FA) 整合指南

pyfackit 是一個輕量、框架無關的二階段驗證(2FA)函式庫。
適合整合到既有網站或後端 API,提供 Email OTP 驗證 功能。

本文件教你如何在自己的專案快速導入 pyfackit。


安裝

在你的後端專案中執行:

pip install pyfackit
pip install redis

(如果從本地原始碼安裝)

pip install -e .

設定環境變數(.env)

REDIS_URL=redis://localhost:6379/0
SMTP_USER=your_email@gmail.com
SMTP_PASS=your_app_password

SMTP 建議使用 Gmail 的 應用程式密碼
Redis 可使用本機 / Docker / 雲端 Redis。


建立設定(可選)

from pyfackit import Settings

settings = Settings(
    code_length=6,
    ttl_seconds=300,
    max_attempts=5,
    min_resend_interval=60,
    lock_minutes=10
)

初始化 OtpService

import os
from dotenv import load_dotenv
from pyfackit import OtpService, EmailSmtpSender, Settings
from pyfackit.stores.redis_store import RedisStore

load_dotenv()

sender = EmailSmtpSender(
    host="smtp.gmail.com",
    port=587,
    username=os.getenv("SMTP_USER"),
    password=os.getenv("SMTP_PASS"),
    use_tls=True,
)

store = RedisStore(url=os.getenv("REDIS_URL"))
settings = Settings()

otp_service = OtpService(sender, store, settings)

發送驗證碼

otp_service.issue(
    user_id=user.id,
    channel="email",
    destination=user.email
)

驗證驗證碼

otp_service.verify(
    user_id=user.id,
    channel="email",
    code=code_from_user
)

驗證成功後 → 建立 session / JWT / 登入。


總結流程

  1. 使用者登入 → 密碼正確
  2. 後端呼叫:
    otp_service.issue(user.id, "email", user.email)
    
  3. 前端輸入驗證碼
  4. 後端驗證:
    otp_service.verify(user.id, "email", code)
    
  5. 驗證成功 → 正式登入

完成!

About

A pluggable Python library for multi-factor authentication (2FA), supporting email, TOTP, SMS, WebAuthn, and more — with built-in testing and simulation tools.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages