Skip to main content

Auth check and more plugins for fastApi

Project description

Auth check and more plugins for fastApi

Getting Started

provide SDK in the following programming languages:

  • Python

Python

  1. Install the fastApi-context package:

    pip install fastApi-context
    
  2. Initialize your fastapi client

    from fastapi import FastAPI
    
    app = FastAPI()
    
  3. Configure plugins

    1. JwtAuthPlugin
      pip install fastApi-context[jwt]
      
    • for JWT authentication you can use the JwtAuthPlugin plugin. This plugin allows you to configure JWT authentication for your FastAPI application.
       from fastapi_context.config import JWTAuthPluginConfig
       from fastapi_context.plugins.auth_plugin import JwtAuthPlugin
       
       jwt_auth_plugin = JwtAuthPlugin(
                auth_plugin_config=JWTAuthPluginConfig(
                key="jwt payload key in context",
                url_white_list=["url white list"],
                user_class=None,  # user class for decode jwt payload
                get_token="token",  # get jwt token way, value is string or callable
                jwt_secret="Your App Jwt secret",
                jwt_algorithms=["HS256"],  # Your App Jwt algorithms
            )
        )
      
    1. RedisAuthPlugin
      pip install fastApi-context[redis]
      
    • for Redis authentication you can use the RedisAuthPlugin plugin. This plugin allows you to configure Redis authentication for your FastAPI application.
      from fastapi_context.config import RedisConfig, RedisAuthPluginConfig
      from fastapi_context.plugins.auth_plugin import RedisAuthPlugin
      
      redis_auth_plugin = RedisAuthPlugin(
               auth_plugin_config=RedisAuthPluginConfig(
               key="redis payload key in context",
               url_white_list=["url white list"],
               user_class=None,  # user class for decode jwt payload
               get_token="token",  # get jwt token way, value is string or callable
               redis_token_key_prefix="your redis token key prefix",
               # config redis client
               # redis_client_function or redis_config must be provided. At least one of these two parameters needs to be set in order for the configuration to work correctly.   
               redis_config=RedisConfig(
                   host=settings.Redis.HOST,
                   port=settings.Redis.PORT,
                   db=settings.Redis.TOKEN_DB_NUM,
                   password=settings.Redis.PASSWORD,
                   decode_responses=True,
               ),
              # sync or async both support, see redis.Redis or redis.asyncio.client.Redis, Prioritize async selection
              # redis_client_function=function,
            )
      )
      
  4. Register middleware

    from fastapi_context.config import ContextConfig, JsonResponseConfig
    from fastapi_context.exceptions import ContextMiddlewareError
    from fastapi_context.context_middleware import FastAPiContextMiddleware
    from starlette.responses import JSONResponse
    from pydantic import BaseModel, Field
    
    # when you set `JSONResponse` for error_response, you need to define a custom response model or use default model `JsonResponseConfig`.
    #  You can define your own BaseModel and implement a custom return type by overriding the create_model_by_error method.
    class MyJsonResponseConfig(BaseModel):
       status: int = Field(default=0, title="status")
       data: Any = Field(default=None, title="data")
       msg: str = Field(default="", title="message")
      
       @classmethod
       def create_model_by_error(cls, error: ContextMiddlewareError):
           """
           create json data by context error
           """
           return cls(status=error.error_code, data=error.data, msg=error.message)
    
    app.add_middleware(
        FastAPiContextMiddleware,
            context_config=ContextConfig(
                plugins=[
                    jwt_auth_plugin,
                    # redis_auth_plugin,
                ],
                error_response=JSONResponse,
                json_data_class=MyJsonResponseConfig,
      
            ),
    )
    

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_context-1.1.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

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

fastapi_context-1.1.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_context-1.1.0.tar.gz.

File metadata

  • Download URL: fastapi_context-1.1.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fastapi_context-1.1.0.tar.gz
Algorithm Hash digest
SHA256 6240f97985ab20ef8cbdf6b238bd96531cffeed0bdb4a59b63692967865c8ea0
MD5 7fd7cb3492d7c80e6c52deff65fc47cf
BLAKE2b-256 7d770f7749971bb326dd52d8ba2eacfafbd2739c396e591bee8542576d594ebf

See more details on using hashes here.

File details

Details for the file fastapi_context-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_context-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bbf75c622b99fcc2453b27293844de4f47f5c0ac5070f7ef8a36dd3088d69fb2
MD5 03120395c8ac5a0c813afe74ac897114
BLAKE2b-256 6f581b9dbf4307527d94c5ef2caeb4beb2669a331068d4b981a64dbf8bbcc46b

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