mirror of
				https://github.com/fastapi-users/fastapi-users.git
				synced 2025-10-31 17:38:30 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Overview
 | |
| 
 | |
| The schema below shows you how the library is structured and how each part fit together.
 | |
| 
 | |
| 
 | |
| ```mermaid
 | |
| flowchart TB
 | |
|     FASTAPI_USERS{FastAPIUsers}
 | |
|     USER_MANAGER{UserManager}
 | |
|     USER_MODEL{User model}
 | |
|     DATABASE_DEPENDENCY[[get_user_db]]
 | |
|     USER_MANAGER_DEPENDENCY[[get_user_manager]]
 | |
|     CURRENT_USER[[current_user]]
 | |
|     subgraph SCHEMAS[Schemas]
 | |
|         USER[User]
 | |
|         USER_CREATE[UserCreate]
 | |
|         USER_UPDATE[UserUpdate]
 | |
|     end
 | |
|     subgraph DATABASE[Database adapters]
 | |
|         SQLALCHEMY[SQLAlchemy]
 | |
|         BEANIE[Beanie]
 | |
|     end
 | |
|     subgraph ROUTERS[Routers]
 | |
|         AUTH[[get_auth_router]]
 | |
|         OAUTH[[get_oauth_router]]
 | |
|         OAUTH_ASSOCIATE[[get_oauth_associate_router]]
 | |
|         REGISTER[[get_register_router]]
 | |
|         VERIFY[[get_verify_router]]
 | |
|         RESET[[get_reset_password_router]]
 | |
|         USERS[[get_users_router]]
 | |
|     end
 | |
|     subgraph AUTH_BACKENDS[Authentication]
 | |
|         subgraph TRANSPORTS[Transports]
 | |
|             COOKIE[CookieTransport]
 | |
|             BEARER[BearerTransport]
 | |
|         end
 | |
|         subgraph STRATEGIES[Strategies]
 | |
|             DB[DatabaseStrategy]
 | |
|             JWT[JWTStrategy]
 | |
|             REDIS[RedisStrategy]
 | |
|         end
 | |
|         AUTH_BACKEND{AuthenticationBackend}
 | |
|     end
 | |
|     DATABASE --> DATABASE_DEPENDENCY
 | |
|     USER_MODEL --> DATABASE_DEPENDENCY
 | |
|     DATABASE_DEPENDENCY --> USER_MANAGER
 | |
| 
 | |
|     USER_MANAGER --> USER_MANAGER_DEPENDENCY
 | |
|     USER_MANAGER_DEPENDENCY --> FASTAPI_USERS
 | |
| 
 | |
|     FASTAPI_USERS --> ROUTERS
 | |
| 
 | |
|     TRANSPORTS --> AUTH_BACKEND
 | |
|     STRATEGIES --> AUTH_BACKEND
 | |
| 
 | |
|     AUTH_BACKEND --> ROUTERS
 | |
|     AUTH_BACKEND --> FASTAPI_USERS
 | |
| 
 | |
|     FASTAPI_USERS --> CURRENT_USER
 | |
| 
 | |
|     SCHEMAS --> ROUTERS
 | |
| ```
 | |
| 
 | |
| ## User model and database adapters
 | |
| 
 | |
| FastAPI Users is compatible with various **databases and ORM**. To build the interface between those database tools and the library, we provide database adapters classes that you need to instantiate and configure.
 | |
| 
 | |
| ➡️ [I'm using SQLAlchemy](databases/sqlalchemy.md)
 | |
| 
 | |
| ➡️ [I'm using Beanie](databases/beanie.md)
 | |
| 
 | |
| ## Authentication backends
 | |
| 
 | |
| Authentication backends define the way users sessions are managed in your app, like access tokens or cookies.
 | |
| 
 | |
| They are composed of two parts: a **transport**, which is how the token will be carried over the requests (e.g. cookies, headers...) and a **strategy**, which is how the token will be generated and secured (e.g. a JWT, a token in database...).
 | |
| 
 | |
| ➡️ [Configure the authentication backends](./authentication/index.md)
 | |
| 
 | |
| ## `UserManager`
 | |
| 
 | |
| The `UserManager` object bears most of the logic of FastAPI Users: registration, verification, password reset... We provide a `BaseUserManager` with this common logic; which you should overload to define how to validate passwords or handle events.
 | |
| 
 | |
| This `UserManager` object should be provided through a FastAPI dependency, `get_user_manager`.
 | |
| 
 | |
| ➡️ [Configure `UserManager`](./user-manager.md)
 | |
| 
 | |
| ## Schemas
 | |
| 
 | |
| FastAPI is heavily using [Pydantic models](https://pydantic-docs.helpmanual.io/) to validate request payloads and serialize responses. **FastAPI Users** is no exception and will expect you to provide Pydantic schemas representing a user when it's read, created and updated.
 | |
| 
 | |
| ➡️ [Configure schemas](./schemas.md)
 | |
| 
 | |
| ## `FastAPIUsers` and routers
 | |
| 
 | |
| Finally, `FastAPIUsers` object is the main class from which you'll be able to generate routers for classic routes like registration or login, but also get the `current_user` dependency factory to inject the authenticated user in your own routes.
 | |
| 
 | |
| ➡️ [Configure `FastAPIUsers` and routers](./routers/index.md)
 | 
