Files
François Voron c4de66b81c Revamp authentication (#831)
* Implement Transport classes

* Implement authentication strategy classes

* Revamp authentication with Transport and Strategy

* Revamp strategy and OAuth so that they can use a callable dependency

* Update docstring

* Make ErrorCode a proper Enum and cleanup unused OpenAPI utils

* Remove useless check

* Tweak typing in authenticator

* Update docs

* Improve logout/destroy token logic

* Update docs

* Update docs

* Update docs and full examples

* Apply formatting to examples

* Update OAuth doc and examples

* Add migration doc

* Implement Redis session token

* Add Redis Session documentation

* RedisSession -> Redis

* Fix links in docs
2021-12-30 15:22:07 +01:00

1.9 KiB

Routers

We're almost there! The last step is to configure the FastAPIUsers object that will wire the user manager, the authentication classes and let us generate the actual API routes.

Configure FastAPIUsers

Configure FastAPIUsers object with all the elements we defined before. More precisely:

  • get_user_manager: Dependency callable getter to inject the user manager class instance. See UserManager.
  • auth_backends: List of authentication backends. See Authentication.
  • user_model: Pydantic model of a user.
  • user_create_model: Pydantic model for creating a user.
  • user_update_model: Pydantic model for updating a user.
  • user_db_model: Pydantic model of a DB representation of a user.
from fastapi_users import FastAPIUsers

fastapi_users = FastAPIUsers(
    get_user_manager,
    [auth_backend],
    User,
    UserCreate,
    UserUpdate,
    UserDB,
)

Available routers

This helper class will let you generate useful routers to setup the authentication system. Each of them is optional, so you can pick only the one that you are interested in! Here are the routers provided:

  • Auth router: Provides /login and /logout routes for a given authentication backend.
  • Register router: Provides /register routes to allow a user to create a new account.
  • Reset password router: Provides /forgot-password and /reset-password routes to allow a user to reset its password.
  • Verify router: Provides /request-verify-token and /verify routes to manage user e-mail verification.
  • Users router: Provides routes to manage users.
  • OAuth router: Provides routes to perform an OAuth authentication against a service provider (like Google or Facebook).

You should check out each of them to understand how to use them.