Skip to main content

A FastAPI JWT authentication library

Project description

fastapi-jwt-authlib

PyPI version


Source Code: https://github.com/kovalewvladimir/fastapi-jwt-authlib


Описание проекта

Библиотека для аутентификации JWT в FastAPI. Она предоставляет удобные инструменты для работы с JWT токенами, обеспечивая безопасность и простоту интеграции в ваши FastAPI приложения.

Установка

pip install fastapi-jwt-authlib

Пример использования

main.py:

from fastapi_jwt_authlib.auth import AuthJWT

AuthJWT.config(
    secret_key=settings.SECRET_KEY,
    cookie_access_key=settings.COOKIE_ACCESS_KEY,
    cookie_refresh_key=settings.COOKIE_REFRESH_KEY,
    cookie_refresh_path=f"{settings.ROOT_PATH}/auth/refresh",
)

auth.py:

from fastapi import APIRouter, HTTPException
from fastapi.security import HTTPBasicCredentials
from fastapi_jwt_authlib.auth import JWTUserData
from fastapi_jwt_authlib.depends import (
    AuthAccessDepends,
    AuthDepends,
    AuthRefreshDepends,
)

router = APIRouter()


@router.post("/login")
def login(user: HTTPBasicCredentials, auth: AuthDepends):
    if user.username != "admin" or user.password != "admin":
        raise HTTPException(status_code=401, detail="Incorrect username or password")

    roles = ["admin"]
    data_jwt = JWTUserData(user=user.username, roles=roles)
    auth.generate_and_store_access_token(data_jwt)
    auth.generate_and_store_refresh_token(data_jwt)

    return {"msg": "Successful login"}


@router.delete("/logout")
def logout(auth: AuthDepends):
    auth.unset_cookies()
    return {"msg": "Successful logout"}


@router.post("/refresh")
def refresh(auth: AuthRefreshDepends):
    roles = ["admin"] if is_admin(auth.user) else []
    data_jwt = JWTUserData(user=auth.user, roles=roles)
    auth.jwt.generate_and_store_access_token(data_jwt)
    return {"msg": "The token has been refresh"}


@router.get("/protected")
def protected(auth: AuthAccessDepends):
    return {"user": auth.user}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_jwt_authlib-0.7.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_jwt_authlib-0.7.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_jwt_authlib-0.7.0.tar.gz.

File metadata

  • Download URL: fastapi_jwt_authlib-0.7.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.1 Linux/6.8.0-1021-azure

File hashes

Hashes for fastapi_jwt_authlib-0.7.0.tar.gz
Algorithm Hash digest
SHA256 5ff9b567d51cfebc5a2c1f242dc7c01581a1b3c79069394b346e2b46eee51438
MD5 a7d275bfd3b49da6186b229395a0377b
BLAKE2b-256 74e7d306203052dc97d761a2fdfbcdafc6fbe7f875bf2ecc684e0c0fef011b5b

See more details on using hashes here.

File details

Details for the file fastapi_jwt_authlib-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: fastapi_jwt_authlib-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.1 Linux/6.8.0-1021-azure

File hashes

Hashes for fastapi_jwt_authlib-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cccb0263f296a919737fbb6c60abd03416b1d4cf6679302185e6e39edb75c283
MD5 05b7c288775b308271ac39d772dc7816
BLAKE2b-256 279478b3a7aa9095950260dd186e3a7d778fce50aa43ba0c7bb579a2ad0393b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page