mirror of
https://github.com/fastapi-users/fastapi-users.git
synced 2025-08-15 11:11:16 +08:00

* 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
1.1 KiB
1.1 KiB
Create a backend
As we said, a backend is the combination of a transport and a strategy. That way, you can create a complete strategy exactly fitting your needs.
For this, you have to use the AuthenticationBackend
class.
from fastapi_users.authentication import AuthenticationBackend, BearerTransport, JWTStrategy
SECRET = "SECRET"
bearer_transport = BearerTransport(tokenUrl="auth/jwt/login")
def get_jwt_strategy() -> JWTStrategy:
return JWTStrategy(secret=SECRET, lifetime_seconds=3600)
auth_backend = AuthenticationBackend(
name="jwt",
transport=bearer_transport,
get_strategy=get_jwt_strategy,
)
As you can see, instantiation is quite simple. It accepts the following arguments:
name
(str
): Name of the backend. Each backend should have a unique name.transport
(Transport
): An instance of aTransport
class.get_strategy
(Callable[..., Strategy]
): A dependency callable returning an instance of aStrategy
class.
Next steps
You can have as many authentication backends as you wish. You'll then have to pass those backends to your FastAPIUsers
instance and generate an auth router for each one of them.