FastAPI Users¶
Ready-to-use and customizable users management for FastAPI
Documentation: https://fastapi-users.github.io/fastapi-users/
Source Code: https://github.com/fastapi-users/fastapi-users
Add quickly a registration and authentication system to your FastAPI project. FastAPI Users is designed to be as customizable and adaptable as possible.
Features¶
- Extensible base user model
- Ready-to-use register, login, reset password and verify e-mail routes
- Ready-to-use social OAuth2 login flow
- Dependency callables to inject current user in route
- Pluggable password validation
- Customizable database backend
- SQLAlchemy ORM async backend included
- MongoDB async backend included thanks to mongodb/motor
- Tortoise ORM backend included
- ormar backend included
- Multiple customizable authentication backends
- Transports: Authorization header, Cookie
- Strategies: JWT, Database, Redis
- Full OpenAPI schema support, even with several authentication backends
In a hurry? Discover Fief, the open-source authentication platform¶
Implementing registration, login, social auth is hard and painful. We know it. With our highly secure and open-source users management platform, you can focus on your app while staying in control of your users data.
- Based on FastAPI Users!
- Open-source: self-host it for free or use our hosted version
- Bring your own database: host your database anywhere, we'll take care of the rest
- Pre-built login and registration pages: clean and fast authentication so you don't have to do it yourself
- Official Python client with built-in FastAPI integration
It's free!
Contributors and sponsors ✨☕️¶
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Development¶
Setup environment¶
You should create a virtual environment and activate it:
And then install the development dependencies:
Run unit tests¶
You can run all the tests with:
Alternatively, you can run pytest
yourself.
There are quite a few unit tests, so you might run into ulimit issues where there are too many open file descriptors. You may be able to set a new, higher limit temporarily with:
Format the code¶
Execute the following command to apply isort
and black
formatting:
License¶
This project is licensed under the terms of the MIT license.