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.