Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fastapi-users/fastapi-users

Ready-to-use and customizable users management for FastAPI
https://github.com/fastapi-users/fastapi-users

async asyncio fastapi fastapi-users python starlette users

Last synced: 5 days ago
JSON representation

Ready-to-use and customizable users management for FastAPI

Awesome Lists containing this project

README

        

# FastAPI Users


FastAPI Users


Ready-to-use and customizable users management for FastAPI

[![build](https://github.com/fastapi-users/fastapi-users/workflows/Build/badge.svg)](https://github.com/fastapi-users/fastapi-users/actions)
[![codecov](https://codecov.io/gh/fastapi-users/fastapi-users/branch/master/graph/badge.svg)](https://codecov.io/gh/fastapi-users/fastapi-users)
[![PyPI version](https://badge.fury.io/py/fastapi-users.svg)](https://badge.fury.io/py/fastapi-users)
[![Downloads](https://pepy.tech/badge/fastapi-users)](https://pepy.tech/project/fastapi-users)

[![All Contributors](https://img.shields.io/badge/all_contributors-81-orange.svg?style=flat-square)](#contributors-)



Subscribe


---

**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](https://fastapi.tiangolo.com/) project. **FastAPI Users** is designed to be as customizable and adaptable as possible.

## Features

* [X] Extensible base user model
* [X] Ready-to-use register, login, reset password and verify e-mail routes
* [X] Ready-to-use social OAuth2 login flow
* [X] Dependency callables to inject current user in route
* [X] Pluggable password validation
* [X] Customizable database backend
* [X] [SQLAlchemy ORM async](https://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html) included
* [X] [MongoDB with Beanie ODM](https://github.com/roman-right/beanie/) included
* [X] Multiple customizable authentication backends
* [X] Transports: Authorization header, Cookie
* [X] Strategies: JWT, Database, Redis
* [X] Full OpenAPI schema support, even with several authentication backends

## In a hurry? Discover Fief, the open-source authentication platform


Fief

Fief

**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.**

* **Open-source**: self-host it for free
* **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 and open-source

## Contributors and sponsors ✨☕️

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):



François Voron
François Voron

🚧
Paolo Dina
Paolo Dina

💵 💻
Dmytro Ohorodnik
Dmytro Ohorodnik

🐛
Matthew D. Scholefield
Matthew D. Scholefield

🐛 💻
roywes
roywes

🐛 💻
Satwik Kansal
Satwik Kansal

📖
Edd Salkield
Edd Salkield

💻 📖


mark-todd
mark-todd

💻 📖
lill74
lill74

🐛 💻 📖
SelfhostedPro
SelfhostedPro

🛡️ 💻
Oskar Gmerek
Oskar Gmerek

📖
Martin Collado
Martin Collado

🐛 💻
Eric Lopes
Eric Lopes

📖 🛡️
Beau Breon
Beau Breon

💻


Niyas Mohammed
Niyas Mohammed

📖
prostomarkeloff
prostomarkeloff

📖 💻
Marius Mézerette
Marius Mézerette

🐛 🤔
Nickolas Grigoriadis
Nickolas Grigoriadis

🐛
Open Data Coder
Open Data Coder

🤔
Mohammed Alshehri
Mohammed Alshehri

🤔
Tyler Renelle
Tyler Renelle

🤔


collerek
collerek

💻
Robert Bracco
Robert Bracco

💵
Augusto Herrmann
Augusto Herrmann

📖
Smithybrewer
Smithybrewer

🐛
silllli
silllli

📖
alexferrari88
alexferrari88

💵
sandalwoodbox
sandalwoodbox

🐛 📖


Vlad Hoi
Vlad Hoi

📖
Joe Nudell
Joe Nudell

🐛
Ben
Ben

💻
BoYanZh
BoYanZh

📖
David Brochart
David Brochart

📖 💻
Daan Beverdam
Daan Beverdam

💻
Stéphane Raimbault
Stéphane Raimbault

⚠️ 🐛


Sondre Lillebø Gundersen
Sondre Lillebø Gundersen

📖
Maxim
Maxim

📖 🐛
scottdavort
scottdavort

💵
John Dukewich
John Dukewich

📖
Yasser Tahiri
Yasser Tahiri

💻
Brandon H. Goding
Brandon H. Goding

💻 📖
PovilasK
PovilasK

💻


Just van den Broecke
Just van den Broecke

💵
jakemanger
jakemanger

🐛 💻
Ikko Ashimine
Ikko Ashimine

💻
Matyáš Richter
Matyáš Richter

💻
Hazedd
Hazedd

🐛 📖
Luis Roel
Luis Roel

💵
Alexandr Makurin
Alexandr Makurin

💻 🐛


Leon Thurner
Leon Thurner

📖
Goran Mekić
Goran Mekić

📦
Gaganpreet
Gaganpreet

💻
Joe Taylor
Joe Taylor

💻
Richard Friberg
Richard Friberg

🐛
Kenton Parton
Kenton Parton

💵
Adrian Ciołek
Adrian Ciołek

🐛


⭕Alexander Rymdeko-Harvey
⭕Alexander Rymdeko-Harvey

📖
schwannden
schwannden

🚧 💻
Jimmy Angel Pérez Díaz
Jimmy Angel Pérez Díaz

🛡️
Austin Orr
Austin Orr

🚧
Carlo Eugster
Carlo Eugster

🛡️
Vittorio Zamboni
Vittorio Zamboni

💻
Andrey
Andrey

📖


Can H. Tartanoglu
Can H. Tartanoglu

🐛
Filipe Nascimento
Filipe Nascimento

🛡️
dudulu
dudulu

💵 🐛 💬
Toni Alatalo
Toni Alatalo

💻 📖
Börge Kiss
Börge Kiss

📖
Guilherme Caminha
Guilherme Caminha

📖
Téva KRIEF
Téva KRIEF

💻


Essa Alshammri
Essa Alshammri

📖
0xJan
0xJan

🐛
Justin Thomas
Justin Thomas

💻
Adam Israel
Adam Israel

💻
Nerixjk
Nerixjk

🐛 💻
Mike Fotinakis
Mike Fotinakis

💻 🐛
lifengmds
lifengmds

💵


raindata5
raindata5

📖
Mark Donnelly
Mark Donnelly

📖
Alexander Zinov
Alexander Zinov

💻
nimaxin
nimaxin

📖

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

## Development

### Setup environment

We use [Hatch](https://hatch.pypa.io/latest/install/) to manage the development environment and production build. Ensure it's installed on your system.

### Run unit tests

You can run all the tests with:

```bash
hatch run test:test
```

### Format the code

Execute the following command to apply linting and check typing:

```bash
hatch run lint
```

### Serve the documentation

You can serve the documentation locally with the following command:

```bash
hatch run docs
```

The documentation will be available on [http://localhost:8000](http://localhost:8000).

## License

This project is licensed under the terms of the MIT license.