mirror of
https://github.com/fastapi-users/fastapi-users.git
synced 2026-03-13 07:49:55 +08:00
636 lines
29 KiB
HTML
636 lines
29 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html class="no-js" lang="en">
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<meta content="width=device-width,initial-scale=1" name="viewport"/>
|
|
<meta content="Ready-to-use and customizable users management for FastAPI" name="description"/>
|
|
<link href="../../favicon.png" rel="icon"/>
|
|
<meta content="mkdocs-1.2.3, mkdocs-material-8.1.10" name="generator"/>
|
|
<title>7.x.x ➡️ 8.x.x - FastAPI Users</title>
|
|
<link href="../../assets/stylesheets/main.d6be258b.min.css" rel="stylesheet"/>
|
|
<link href="../../assets/stylesheets/palette.e6a45f82.min.css" rel="stylesheet"/>
|
|
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
|
|
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback" rel="stylesheet"/>
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
<script>__md_scope=new URL("../..",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
</head>
|
|
<body data-md-color-accent="red" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
|
|
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
|
|
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
|
|
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
<a class="md-skip" href="#7xx-8xx">
|
|
Skip to content
|
|
</a>
|
|
</div>
|
|
<div data-md-component="announce">
|
|
</div>
|
|
<header class="md-header" data-md-component="header">
|
|
<nav aria-label="Header" class="md-header__inner md-grid">
|
|
<a aria-label="FastAPI Users" class="md-header__button md-logo" data-md-component="logo" href="../.." title="FastAPI Users">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M16.5 12A2.5 2.5 0 0 0 19 9.5 2.5 2.5 0 0 0 16.5 7 2.5 2.5 0 0 0 14 9.5a2.5 2.5 0 0 0 2.5 2.5M9 11a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m7.5 3c-1.83 0-5.5.92-5.5 2.75V19h11v-2.25c0-1.83-3.67-2.75-5.5-2.75M9 13c-2.33 0-7 1.17-7 3.5V19h7v-2.25c0-.85.33-2.34 2.37-3.47C10.5 13.1 9.66 13 9 13z"></path></svg>
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"></path></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
FastAPI Users
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
7.x.x ➡️ 8.x.x
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<form class="md-header__option" data-md-component="palette">
|
|
<input aria-label="Switch to dark mode" class="md-option" data-md-color-accent="red" data-md-color-media="" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
|
|
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Switch to dark mode">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7M9 21a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1H9v1z"></path></svg>
|
|
</label>
|
|
<input aria-label="Switch to light mode" class="md-option" data-md-color-accent="red" data-md-color-media="" data-md-color-primary="red" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
|
|
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Switch to light mode">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7M9 21v-1h6v1a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m3-17a5 5 0 0 0-5 5c0 2.05 1.23 3.81 3 4.58V16h4v-2.42c1.77-.77 3-2.53 3-4.58a5 5 0 0 0-5-5z"></path></svg>
|
|
</label>
|
|
</form>
|
|
<label class="md-header__button md-icon" for="__search">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"></path></svg>
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
|
|
</label>
|
|
<nav aria-label="Search" class="md-search__options">
|
|
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" type="reset">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg>
|
|
</button>
|
|
</nav>
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix="">
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="md-header__source">
|
|
<a class="md-source" data-md-component="source" href="https://github.com/fastapi-users/fastapi-users" title="Go to repository">
|
|
<div class="md-source__icon md-icon">
|
|
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
frankie567/fastapi-users
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
<div class="md-container" data-md-component="container">
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a aria-label="FastAPI Users" class="md-nav__button md-logo" data-md-component="logo" href="../.." title="FastAPI Users">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M16.5 12A2.5 2.5 0 0 0 19 9.5 2.5 2.5 0 0 0 16.5 7 2.5 2.5 0 0 0 14 9.5a2.5 2.5 0 0 0 2.5 2.5M9 11a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m7.5 3c-1.83 0-5.5.92-5.5 2.75V19h11v-2.25c0-1.83-3.67-2.75-5.5-2.75M9 13c-2.33 0-7 1.17-7 3.5V19h7v-2.25c0-.85.33-2.34 2.37-3.47C10.5 13.1 9.66 13 9 13z"></path></svg>
|
|
</a>
|
|
FastAPI Users
|
|
</label>
|
|
<div class="md-nav__source">
|
|
<a class="md-source" data-md-component="source" href="https://github.com/fastapi-users/fastapi-users" title="Go to repository">
|
|
<div class="md-source__icon md-icon">
|
|
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
frankie567/fastapi-users
|
|
</div>
|
|
</a>
|
|
</div>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../..">
|
|
About
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../installation/">
|
|
Installation
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" id="__nav_3" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_3">
|
|
Configuration
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Configuration" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Configuration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/overview/">
|
|
Overview
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/models/">
|
|
Models
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_3" id="__nav_3_3" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_3_3">
|
|
Database adapters
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Database adapters" class="md-nav" data-md-level="2">
|
|
<label class="md-nav__title" for="__nav_3_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Database adapters
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/databases/sqlalchemy/">
|
|
SQLAlchemy
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/databases/mongodb/">
|
|
MongoDB
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/databases/tortoise/">
|
|
Tortoise ORM
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/databases/ormar/">
|
|
Ormar
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_4" id="__nav_3_4" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_3_4">
|
|
Authentication backends
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Authentication backends" class="md-nav" data-md-level="2">
|
|
<label class="md-nav__title" for="__nav_3_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Authentication backends
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/authentication/">
|
|
Introduction
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_4_2" id="__nav_3_4_2" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_3_4_2">
|
|
Transports
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Transports" class="md-nav" data-md-level="3">
|
|
<label class="md-nav__title" for="__nav_3_4_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Transports
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/authentication/transports/cookie/">
|
|
Cookie
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/authentication/transports/bearer/">
|
|
Bearer
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_4_3" id="__nav_3_4_3" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_3_4_3">
|
|
Strategies
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Strategies" class="md-nav" data-md-level="3">
|
|
<label class="md-nav__title" for="__nav_3_4_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Strategies
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/authentication/strategies/database/">
|
|
Database
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/authentication/strategies/jwt/">
|
|
JWT
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/authentication/strategies/redis/">
|
|
Redis
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/authentication/backend/">
|
|
Create a backend
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/user-manager/">
|
|
UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3_6" id="__nav_3_6" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_3_6">
|
|
Routers
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Routers" class="md-nav" data-md-level="2">
|
|
<label class="md-nav__title" for="__nav_3_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Routers
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/routers/">
|
|
Introduction
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/routers/auth/">
|
|
Auth router
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/routers/register/">
|
|
Register routes
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/routers/verify/">
|
|
Verify router
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/routers/reset/">
|
|
Reset password router
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/routers/users/">
|
|
Users router
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/full-example/">
|
|
Full example
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../configuration/oauth/">
|
|
OAuth2
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" id="__nav_4" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_4">
|
|
Usage
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Usage" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Usage
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../usage/flow/">
|
|
Flow
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../usage/routes/">
|
|
Routes
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../usage/current-user/">
|
|
Get current user
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" id="__nav_5" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_5">
|
|
Cookbook
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Cookbook" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Cookbook
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../../cookbook/create-user-programmatically/">
|
|
Create a user programmatically
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" id="__nav_6" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_6">
|
|
Migration
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-label="Migration" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Migration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../08_to_1x/">
|
|
0.8.x ➡️ 1.x.x
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../1x_to_2x/">
|
|
1.x.x ➡️ 2.x.x
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../2x_to_3x/">
|
|
2.x.x ➡️ 3.x.x
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../3x_to_4x/">
|
|
3.x.x ➡️ 4.x.x
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../4x_to_5x/">
|
|
4.x.x ➡️ 5.x.x
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../6x_to_7x/">
|
|
6.x.x ➡️ 7.x.x
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--active">
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
7.x.x ➡️ 8.x.x
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<a class="md-nav__link md-nav__link--active" href="./">
|
|
7.x.x ➡️ 8.x.x
|
|
</a>
|
|
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#event-handlers-should-live-in-the-usermanager">
|
|
Event handlers should live in the UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#password-validation-should-live-in-the-usermanager">
|
|
Password validation should live in the UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#verify-token-secret-and-lifetime-parameters-are-attributes-of-usermanager">
|
|
Verify token secret and lifetime parameters are attributes of UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#reset-password-token-secret-and-lifetime-parameters-are-attributes-of-usermanager">
|
|
Reset password token secret and lifetime parameters are attributes of UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#database-adapter-should-be-provided-in-a-dependency">
|
|
Database adapter should be provided in a dependency
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#fastapiusers-now-expect-a-get_user_manager-dependency">
|
|
FastAPIUsers now expect a get_user_manager dependency
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#lost">
|
|
Lost?
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="../8x_to_9x/">
|
|
8.x.x ➡️ 9.x.x
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#event-handlers-should-live-in-the-usermanager">
|
|
Event handlers should live in the UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#password-validation-should-live-in-the-usermanager">
|
|
Password validation should live in the UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#verify-token-secret-and-lifetime-parameters-are-attributes-of-usermanager">
|
|
Verify token secret and lifetime parameters are attributes of UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#reset-password-token-secret-and-lifetime-parameters-are-attributes-of-usermanager">
|
|
Reset password token secret and lifetime parameters are attributes of UserManager
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#database-adapter-should-be-provided-in-a-dependency">
|
|
Database adapter should be provided in a dependency
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#fastapiusers-now-expect-a-get_user_manager-dependency">
|
|
FastAPIUsers now expect a get_user_manager dependency
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#lost">
|
|
Lost?
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
<h1 id="7xx-8xx">7.x.x ➡️ 8.x.x<a class="headerlink" href="#7xx-8xx" title="Permanent link">¶</a></h1>
|
|
<p>Version 8 includes the biggest code changes since version 1. We reorganized lot of parts of the code to make it even more modular and integrate more into the dependency injection system of FastAPI.</p>
|
|
<p>Most importantly, you need now to implement a <code>UserManager</code> class and a associated dependency to create an instance of this class.</p>
|
|
<h2 id="event-handlers-should-live-in-the-usermanager">Event handlers should live in the <code>UserManager</code><a class="headerlink" href="#event-handlers-should-live-in-the-usermanager" title="Permanent link">¶</a></h2>
|
|
<p>Before, event handlers like <code>on_after_register</code> or <code>on_after_forgot_password</code> were defined in their own functions that were passed as arguments of router generators.</p>
|
|
<p>Now, they should be <strong>methods</strong> of the <code>UserManager</code> class.</p>
|
|
<p>You can read more in the <a href="../../configuration/user-manager/"><code>UserManager</code> documentation</a>.</p>
|
|
<h2 id="password-validation-should-live-in-the-usermanager">Password validation should live in the <code>UserManager</code><a class="headerlink" href="#password-validation-should-live-in-the-usermanager" title="Permanent link">¶</a></h2>
|
|
<p>Before, password validation was defined in its own function that was passed as argument of <code>FastAPIUsers</code>.</p>
|
|
<p>Now, it should be a method of the <code>UserManager</code> class.</p>
|
|
<p>You can read more in the <a href="../../configuration/user-manager/"><code>UserManager</code> documentation</a>.</p>
|
|
<h2 id="verify-token-secret-and-lifetime-parameters-are-attributes-of-usermanager">Verify token secret and lifetime parameters are attributes of <code>UserManager</code><a class="headerlink" href="#verify-token-secret-and-lifetime-parameters-are-attributes-of-usermanager" title="Permanent link">¶</a></h2>
|
|
<p>Before, verify token and lifetime parameters were passed as argument of <code>get_verify_router</code>.</p>
|
|
<p>Now, they should be defined as attributes of the <code>UserManager</code> class.</p>
|
|
<p>You can read more in the <a href="../../configuration/user-manager/"><code>UserManager</code> documentation</a>.</p>
|
|
<h2 id="reset-password-token-secret-and-lifetime-parameters-are-attributes-of-usermanager">Reset password token secret and lifetime parameters are attributes of <code>UserManager</code><a class="headerlink" href="#reset-password-token-secret-and-lifetime-parameters-are-attributes-of-usermanager" title="Permanent link">¶</a></h2>
|
|
<p>Before, reset password token and lifetime parameters were passed as argument of <code>get_verify_router</code>.</p>
|
|
<p>Now, they should be defined as attributes of the <code>UserManager</code> class.</p>
|
|
<p>You can read more in the <a href="../../configuration/user-manager/"><code>UserManager</code> documentation</a>.</p>
|
|
<h2 id="database-adapter-should-be-provided-in-a-dependency">Database adapter should be provided in a dependency<a class="headerlink" href="#database-adapter-should-be-provided-in-a-dependency" title="Permanent link">¶</a></h2>
|
|
<p>Before, we advised to directly instantiate the database adapter class.</p>
|
|
<p>Now, it should be instantiated inside a dependency that you define yourself. The benefit of this is that it lives in the dependency injection system of FastAPI, allowing you to have more dynamic logic to create your instance.</p>
|
|
<p>➡️ <a href="../../configuration/databases/sqlalchemy/">I'm using SQLAlchemy</a></p>
|
|
<p>➡️ <a href="../../configuration/databases/mongodb/">I'm using MongoDB</a></p>
|
|
<p>➡️ <a href="../../configuration/databases/tortoise/">I'm using Tortoise ORM</a></p>
|
|
<p>➡️ <a href="../../configuration/databases/ormar/">I'm using ormar</a></p>
|
|
<h2 id="fastapiusers-now-expect-a-get_user_manager-dependency">FastAPIUsers now expect a <code>get_user_manager</code> dependency<a class="headerlink" href="#fastapiusers-now-expect-a-get_user_manager-dependency" title="Permanent link">¶</a></h2>
|
|
<p>Before, the database adapter instance was passed as argument of <code>FastAPIUsers</code>.</p>
|
|
<p>Now, you should define a <code>get_user_manager</code> dependency returning an instance of your <code>UserManager</code> class. This dependency will be dependent of the database adapter dependency.</p>
|
|
<p>You can read more in the <a href="../../configuration/user-manager/"><code>UserManager</code> documentation</a> and <a href="http://localhost:8000/configuration/routers/"><code>FastAPIUsers</code> documentation</a></p>
|
|
<h2 id="lost">Lost?<a class="headerlink" href="#lost" title="Permanent link">¶</a></h2>
|
|
<p>If you're unsure or a bit lost, make sure to check the <a href="../../configuration/full-example/">full working examples</a>.</p>
|
|
</article>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
<footer class="md-footer">
|
|
<nav aria-label="Footer" class="md-footer__inner md-grid">
|
|
<a aria-label="Previous: 6.x.x ➡️ 7.x.x" class="md-footer__link md-footer__link--prev" href="../6x_to_7x/" rel="prev">
|
|
<div class="md-footer__button md-icon">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"></path></svg>
|
|
</div>
|
|
<div class="md-footer__title">
|
|
<div class="md-ellipsis">
|
|
<span class="md-footer__direction">
|
|
Previous
|
|
</span>
|
|
6.x.x ➡️ 7.x.x
|
|
</div>
|
|
</div>
|
|
</a>
|
|
<a aria-label="Next: 8.x.x ➡️ 9.x.x" class="md-footer__link md-footer__link--next" href="../8x_to_9x/" rel="next">
|
|
<div class="md-footer__title">
|
|
<div class="md-ellipsis">
|
|
<span class="md-footer__direction">
|
|
Next
|
|
</span>
|
|
8.x.x ➡️ 9.x.x
|
|
</div>
|
|
</div>
|
|
<div class="md-footer__button md-icon">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"></path></svg>
|
|
</div>
|
|
</a>
|
|
</nav>
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
|
|
Material for MkDocs
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
<script id="__config" type="application/json">{"base": "../..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "../../assets/javascripts/workers/search.092fa1f6.min.js"}</script>
|
|
<script src="../../assets/javascripts/bundle.e3b2bf44.min.js"></script>
|
|
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
|
|
</body>
|
|
</html> |