fastapi_contrib.auth package¶
Submodules¶
fastapi_contrib.auth.backends module¶
- class fastapi_contrib.auth.backends.AuthBackend[source]¶
Bases:
starlette.authentication.AuthenticationBackend
Own Auth Backend based on Starlette’s AuthenticationBackend.
Use instance of this class as backend argument to add_middleware func:
app = FastAPI() @app.on_event('startup') async def startup(): app.add_middleware(AuthenticationMiddleware, backend=AuthBackend())
- async authenticate(conn: starlette.requests.HTTPConnection) → Tuple[bool, Optional[fastapi_contrib.auth.models.User]][source]¶
Main function that AuthenticationMiddleware uses from this backend. Should return whether request is authenticated based on credentials and if it was, return also user instance.
- Parameters
conn – HTTPConnection of the current request-response cycle
- Returns
2-tuple: is authenticated & user instance if exists
fastapi_contrib.auth.middlewares module¶
- class fastapi_contrib.auth.middlewares.AuthenticationMiddleware(app: Callable[[MutableMapping[str, Any], Callable[], Awaitable[MutableMapping[str, Any]]], Callable[[MutableMapping[str, Any]], Awaitable[None]]], Awaitable[None]], backend: starlette.authentication.AuthenticationBackend, on_error: Optional[Callable[[starlette.requests.HTTPConnection, starlette.authentication.AuthenticationError], starlette.responses.Response]] = None)[source]¶
Bases:
starlette.middleware.authentication.AuthenticationMiddleware
Own Authentication Middleware based on Starlette’s default one.
Use instance of this class as a first argument to add_middleware func:
app = FastAPI() @app.on_event('startup') async def startup(): app.add_middleware(AuthenticationMiddleware, backend=AuthBackend())
- static default_on_error(conn: starlette.requests.HTTPConnection, exc: Exception) → fastapi_contrib.common.responses.UJSONResponse[source]¶
Overriden method just to make sure we return response in our format.
- Parameters
conn – HTTPConnection of the current request-response cycle
exc – Any exception that could have been raised
- Returns
UJSONResponse with error data as dict and 403 status code
fastapi_contrib.auth.models module¶
- class fastapi_contrib.auth.models.Token(*, id: int = None, created: datetime.datetime = None, key: fastapi_contrib.auth.models.ConstrainedStrValue = None, user_id: int = None, expires: datetime.datetime = None, is_active: bool = True)[source]¶
Bases:
fastapi_contrib.db.models.MongoDBTimeStampedModel
- Default Token model with several fields implemented as a default:
id - inherited from MongoDBTimeStampedModel
created - inherited from MongoDBTimeStampedModel
key - string against which user will be authenticated
user_id - id of User, who owns this token
expires - datetime when this token no longer active
is_active - defines whether this token can be used
- class Meta[source]¶
Bases:
object
- collection = 'tokens'¶
- indexes = [<pymongo.operations.IndexModel object>]¶
- expires: datetime.datetime¶
- is_active: bool¶
- key: fastapi_contrib.auth.models.ConstrainedStrValue¶
- classmethod set_key(v, values, **kwargs) → str[source]¶
If key is supplied (ex. from DB) then use it, otherwise generate new.
- user_id: int¶
- class fastapi_contrib.auth.models.User(*, id: int = None, created: datetime.datetime = None, username: str)[source]¶
Bases:
fastapi_contrib.db.models.MongoDBTimeStampedModel
Default User model that has only username field on top of default (id, created) pair from MongoDBTimeStampedModel
- username: str¶
fastapi_contrib.auth.permissions module¶
- class fastapi_contrib.auth.permissions.IsAuthenticated(request: starlette.requests.Request)[source]¶
Bases:
fastapi_contrib.permissions.BasePermission
Permission that checks if the user has been authenticated (by middleware)
Use it as an argument to PermissionsDependency as follows:
app = FastAPI() @app.get( "/user/", dependencies=[Depends(PermissionsDependency([IsAuthenticated]))] ) async def user(request: Request) -> dict: return request.scope["user"].dict()
- error_code = 401¶
- error_msg = 'Not authenticated.'¶
- status_code = 401¶
fastapi_contrib.auth.serializers module¶
- class fastapi_contrib.auth.serializers.TokenSerializer[source]¶
Bases:
fastapi_contrib.serializers.common.ModelSerializer
Serializer for the default Token model. Use it if you use default model.
- class Meta[source]¶
Bases:
object
- exclude = {'user_id'}¶
- model¶
alias of
fastapi_contrib.auth.models.Token