Deployed 7f80895 to dev with MkDocs 1.6.1 and mike 2.1.3

This commit is contained in:
fastapi-users-ci
2025-10-24 15:26:40 +00:00
parent 4981833c2f
commit c51e53f13f
48 changed files with 4861 additions and 907 deletions

View File

@@ -18,7 +18,7 @@
<link rel="icon" href="../../favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.49">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.22">
@@ -26,7 +26,7 @@
<link rel="stylesheet" href="../../assets/stylesheets/main.6f8fc17f.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/main.84d31ad4.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
@@ -94,7 +94,7 @@
</a>
</div>
<script>var el=document.querySelector("[data-md-component=outdated]"),outdated=__md_get("__outdated",sessionStorage);!0===outdated&&el&&(el.hidden=!1)</script>
<script>var el=document.querySelector("[data-md-component=outdated]"),base=new URL("../.."),outdated=__md_get("__outdated",sessionStorage,base);!0===outdated&&el&&(el.hidden=!1)</script>
</aside>
</div>
@@ -164,11 +164,13 @@
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><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.52 6.52 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 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><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.52 6.52 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 5"/></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">
@@ -202,13 +204,14 @@
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/fastapi-users/fastapi-users" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><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.81"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
fastapi-users/fastapi-users
@@ -254,7 +257,7 @@
<a href="https://github.com/fastapi-users/fastapi-users" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><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.81"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
fastapi-users/fastapi-users
@@ -274,8 +277,10 @@
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
About
</span>
@@ -294,8 +299,10 @@
<a href="../../installation/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
@@ -313,6 +320,7 @@
@@ -329,8 +337,10 @@
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Configuration
</span>
@@ -354,8 +364,10 @@
<a href="../../configuration/overview/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
@@ -374,6 +386,7 @@
@@ -387,8 +400,10 @@
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
<span class="md-ellipsis">
User model and databases
</span>
@@ -412,8 +427,10 @@
<a href="../../configuration/databases/sqlalchemy/" class="md-nav__link">
<span class="md-ellipsis">
SQLAlchemy
</span>
@@ -433,8 +450,10 @@
<a href="../../configuration/databases/beanie/" class="md-nav__link">
<span class="md-ellipsis">
Beanie
</span>
@@ -461,6 +480,7 @@
@@ -474,8 +494,10 @@
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
<span class="md-ellipsis">
Authentication backends
</span>
@@ -499,8 +521,10 @@
<a href="../../configuration/authentication/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
@@ -519,6 +543,7 @@
@@ -532,8 +557,10 @@
<label class="md-nav__link" for="__nav_3_3_2" id="__nav_3_3_2_label" tabindex="0">
<span class="md-ellipsis">
Transports
</span>
@@ -557,8 +584,10 @@
<a href="../../configuration/authentication/transports/cookie/" class="md-nav__link">
<span class="md-ellipsis">
Cookie
</span>
@@ -578,8 +607,10 @@
<a href="../../configuration/authentication/transports/bearer/" class="md-nav__link">
<span class="md-ellipsis">
Bearer
</span>
@@ -606,6 +637,7 @@
@@ -619,8 +651,10 @@
<label class="md-nav__link" for="__nav_3_3_3" id="__nav_3_3_3_label" tabindex="0">
<span class="md-ellipsis">
Strategies
</span>
@@ -644,8 +678,10 @@
<a href="../../configuration/authentication/strategies/database/" class="md-nav__link">
<span class="md-ellipsis">
Database
</span>
@@ -665,8 +701,10 @@
<a href="../../configuration/authentication/strategies/jwt/" class="md-nav__link">
<span class="md-ellipsis">
JWT
</span>
@@ -686,8 +724,10 @@
<a href="../../configuration/authentication/strategies/redis/" class="md-nav__link">
<span class="md-ellipsis">
Redis
</span>
@@ -715,8 +755,10 @@
<a href="../../configuration/authentication/backend/" class="md-nav__link">
<span class="md-ellipsis">
Create a backend
</span>
@@ -744,8 +786,10 @@
<a href="../../configuration/user-manager/" class="md-nav__link">
<span class="md-ellipsis">
UserManager
</span>
@@ -765,8 +809,10 @@
<a href="../../configuration/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
@@ -785,6 +831,7 @@
@@ -798,8 +845,10 @@
<label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
<span class="md-ellipsis">
Routers
</span>
@@ -823,8 +872,10 @@
<a href="../../configuration/routers/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
@@ -844,8 +895,10 @@
<a href="../../configuration/routers/auth/" class="md-nav__link">
<span class="md-ellipsis">
Auth router
</span>
@@ -865,8 +918,10 @@
<a href="../../configuration/routers/register/" class="md-nav__link">
<span class="md-ellipsis">
Register routes
</span>
@@ -886,8 +941,10 @@
<a href="../../configuration/routers/verify/" class="md-nav__link">
<span class="md-ellipsis">
Verify router
</span>
@@ -907,8 +964,10 @@
<a href="../../configuration/routers/reset/" class="md-nav__link">
<span class="md-ellipsis">
Reset password router
</span>
@@ -928,8 +987,10 @@
<a href="../../configuration/routers/users/" class="md-nav__link">
<span class="md-ellipsis">
Users router
</span>
@@ -957,8 +1018,10 @@
<a href="../../configuration/full-example/" class="md-nav__link">
<span class="md-ellipsis">
Full example
</span>
@@ -978,8 +1041,10 @@
<a href="../../configuration/oauth/" class="md-nav__link">
<span class="md-ellipsis">
OAuth2
</span>
@@ -999,8 +1064,10 @@
<a href="../../configuration/password-hash/" class="md-nav__link">
<span class="md-ellipsis">
Password hash
</span>
@@ -1028,6 +1095,7 @@
@@ -1044,8 +1112,10 @@
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-ellipsis">
Usage
</span>
@@ -1069,8 +1139,10 @@
<a href="../flow/" class="md-nav__link">
<span class="md-ellipsis">
Flow
</span>
@@ -1090,8 +1162,10 @@
<a href="../routes/" class="md-nav__link">
<span class="md-ellipsis">
Routes
</span>
@@ -1120,8 +1194,10 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Get current user
</span>
@@ -1131,8 +1207,10 @@
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Get current user
</span>
@@ -1256,6 +1334,7 @@
@@ -1272,8 +1351,10 @@
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-ellipsis">
Cookbook
</span>
@@ -1297,8 +1378,10 @@
<a href="../../cookbook/create-user-programmatically/" class="md-nav__link">
<span class="md-ellipsis">
Create a user programmatically
</span>
@@ -1324,6 +1407,7 @@
@@ -1340,8 +1424,10 @@
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="">
<span class="md-ellipsis">
Migration
</span>
@@ -1365,8 +1451,10 @@
<a href="../../migration/08_to_1x/" class="md-nav__link">
<span class="md-ellipsis">
0.8.x ➡️ 1.x.x
</span>
@@ -1386,8 +1474,10 @@
<a href="../../migration/1x_to_2x/" class="md-nav__link">
<span class="md-ellipsis">
1.x.x ➡️ 2.x.x
</span>
@@ -1407,8 +1497,10 @@
<a href="../../migration/2x_to_3x/" class="md-nav__link">
<span class="md-ellipsis">
2.x.x ➡️ 3.x.x
</span>
@@ -1428,8 +1520,10 @@
<a href="../../migration/3x_to_4x/" class="md-nav__link">
<span class="md-ellipsis">
3.x.x ➡️ 4.x.x
</span>
@@ -1449,8 +1543,10 @@
<a href="../../migration/4x_to_5x/" class="md-nav__link">
<span class="md-ellipsis">
4.x.x ➡️ 5.x.x
</span>
@@ -1470,8 +1566,10 @@
<a href="../../migration/6x_to_7x/" class="md-nav__link">
<span class="md-ellipsis">
6.x.x ➡️ 7.x.x
</span>
@@ -1491,8 +1589,10 @@
<a href="../../migration/7x_to_8x/" class="md-nav__link">
<span class="md-ellipsis">
7.x.x ➡️ 8.x.x
</span>
@@ -1512,8 +1612,10 @@
<a href="../../migration/8x_to_9x/" class="md-nav__link">
<span class="md-ellipsis">
8.x.x ➡️ 9.x.x
</span>
@@ -1533,8 +1635,10 @@
<a href="../../migration/9x_to_10x/" class="md-nav__link">
<span class="md-ellipsis">
9.x.x ➡️ 10.x.x
</span>
@@ -1670,6 +1774,7 @@
<h1 id="get-current-user">Get current user<a class="headerlink" href="#get-current-user" title="Permanent link">&para;</a></h1>
<p><strong>FastAPI Users</strong> provides a dependency callable to easily inject authenticated user in your routes. They are available from your <code>FastAPIUsers</code> instance.</p>
<div class="admonition tip">
@@ -1696,28 +1801,28 @@
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="n">current_user</span> <span class="o">=</span> <span class="n">fastapi_users</span><span class="o">.</span><span class="n">current_user</span><span class="p">()</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/protected-route&quot;</span><span class="p">)</span>
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_user</span><span class="p">)):</span>
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="k">def</span><span class="w"> </span><span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_user</span><span class="p">)):</span>
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">&quot;</span>
</code></pre></div>
<h3 id="get-the-current-active-user">Get the current <strong>active</strong> user<a class="headerlink" href="#get-the-current-active-user" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="n">current_active_user</span> <span class="o">=</span> <span class="n">fastapi_users</span><span class="o">.</span><span class="n">current_user</span><span class="p">(</span><span class="n">active</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/protected-route&quot;</span><span class="p">)</span>
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_user</span><span class="p">)):</span>
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="k">def</span><span class="w"> </span><span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_user</span><span class="p">)):</span>
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">&quot;</span>
</code></pre></div>
<h3 id="get-the-current-active-and-verified-user">Get the current <strong>active</strong> and <strong>verified</strong> user<a class="headerlink" href="#get-the-current-active-and-verified-user" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="n">current_active_verified_user</span> <span class="o">=</span> <span class="n">fastapi_users</span><span class="o">.</span><span class="n">current_user</span><span class="p">(</span><span class="n">active</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">verified</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/protected-route&quot;</span><span class="p">)</span>
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_verified_user</span><span class="p">)):</span>
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="k">def</span><span class="w"> </span><span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_verified_user</span><span class="p">)):</span>
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">&quot;</span>
</code></pre></div>
<h3 id="get-the-current-active-superuser">Get the current active <strong>superuser</strong><a class="headerlink" href="#get-the-current-active-superuser" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="n">current_superuser</span> <span class="o">=</span> <span class="n">fastapi_users</span><span class="o">.</span><span class="n">current_user</span><span class="p">(</span><span class="n">active</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">superuser</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/protected-route&quot;</span><span class="p">)</span>
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_superuser</span><span class="p">)):</span>
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="k">def</span><span class="w"> </span><span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_superuser</span><span class="p">)):</span>
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">&quot;</span>
</code></pre></div>
<h3 id="dynamically-enable-authentication-backends">Dynamically enable authentication backends<a class="headerlink" href="#dynamically-enable-authentication-backends" title="Permanent link">&para;</a></h3>
@@ -1725,15 +1830,15 @@
<p class="admonition-title">Warning</p>
<p>This is an advanced feature for cases where you have several authentication backends that are enabled conditionally. In most cases, you won't need this option.</p>
</div>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">Request</span>
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="kn">from</span> <span class="nn">fastapi_users.authentication</span> <span class="kn">import</span> <span class="n">AuthenticationBackend</span><span class="p">,</span> <span class="n">BearerTransport</span><span class="p">,</span> <span class="n">CookieTransport</span><span class="p">,</span> <span class="n">JWTStrategy</span>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">Request</span>
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi_users.authentication</span><span class="w"> </span><span class="kn">import</span> <span class="n">AuthenticationBackend</span><span class="p">,</span> <span class="n">BearerTransport</span><span class="p">,</span> <span class="n">CookieTransport</span><span class="p">,</span> <span class="n">JWTStrategy</span>
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="n">SECRET</span> <span class="o">=</span> <span class="s2">&quot;SECRET&quot;</span>
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a>
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="n">bearer_transport</span> <span class="o">=</span> <span class="n">BearerTransport</span><span class="p">(</span><span class="n">tokenUrl</span><span class="o">=</span><span class="s2">&quot;auth/jwt/login&quot;</span><span class="p">)</span>
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="n">cookie_transport</span> <span class="o">=</span> <span class="n">CookieTransport</span><span class="p">(</span><span class="n">cookie_max_age</span><span class="o">=</span><span class="mi">3600</span><span class="p">)</span>
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a>
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="k">def</span> <span class="nf">get_jwt_strategy</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">JWTStrategy</span><span class="p">:</span>
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_jwt_strategy</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">JWTStrategy</span><span class="p">:</span>
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a> <span class="k">return</span> <span class="n">JWTStrategy</span><span class="p">(</span><span class="n">secret</span><span class="o">=</span><span class="n">SECRET</span><span class="p">,</span> <span class="n">lifetime_seconds</span><span class="o">=</span><span class="mi">3600</span><span class="p">)</span>
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a>
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="n">jwt_backend</span> <span class="o">=</span> <span class="n">AuthenticationBackend</span><span class="p">(</span>
@@ -1747,7 +1852,7 @@
<a id="__codelineno-4-20" name="__codelineno-4-20" href="#__codelineno-4-20"></a> <span class="n">get_strategy</span><span class="o">=</span><span class="n">get_jwt_strategy</span><span class="p">,</span>
<a id="__codelineno-4-21" name="__codelineno-4-21" href="#__codelineno-4-21"></a><span class="p">)</span>
<a id="__codelineno-4-22" name="__codelineno-4-22" href="#__codelineno-4-22"></a>
<a id="__codelineno-4-23" name="__codelineno-4-23" href="#__codelineno-4-23"></a><span class="k">async</span> <span class="k">def</span> <span class="nf">get_enabled_backends</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
<a id="__codelineno-4-23" name="__codelineno-4-23" href="#__codelineno-4-23"></a><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_enabled_backends</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">):</span>
<a id="__codelineno-4-24" name="__codelineno-4-24" href="#__codelineno-4-24"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return the enabled dependencies following custom logic.&quot;&quot;&quot;</span>
<a id="__codelineno-4-25" name="__codelineno-4-25" href="#__codelineno-4-25"></a> <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span> <span class="o">==</span> <span class="s2">&quot;/protected-route-only-jwt&quot;</span><span class="p">:</span>
<a id="__codelineno-4-26" name="__codelineno-4-26" href="#__codelineno-4-26"></a> <span class="k">return</span> <span class="p">[</span><span class="n">jwt_backend</span><span class="p">]</span>
@@ -1759,18 +1864,18 @@
<a id="__codelineno-4-32" name="__codelineno-4-32" href="#__codelineno-4-32"></a>
<a id="__codelineno-4-33" name="__codelineno-4-33" href="#__codelineno-4-33"></a>
<a id="__codelineno-4-34" name="__codelineno-4-34" href="#__codelineno-4-34"></a><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/protected-route&quot;</span><span class="p">)</span>
<a id="__codelineno-4-35" name="__codelineno-4-35" href="#__codelineno-4-35"></a><span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_user</span><span class="p">)):</span>
<a id="__codelineno-4-35" name="__codelineno-4-35" href="#__codelineno-4-35"></a><span class="k">def</span><span class="w"> </span><span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_user</span><span class="p">)):</span>
<a id="__codelineno-4-36" name="__codelineno-4-36" href="#__codelineno-4-36"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">. You are authenticated with a cookie or a JWT.&quot;</span>
<a id="__codelineno-4-37" name="__codelineno-4-37" href="#__codelineno-4-37"></a>
<a id="__codelineno-4-38" name="__codelineno-4-38" href="#__codelineno-4-38"></a>
<a id="__codelineno-4-39" name="__codelineno-4-39" href="#__codelineno-4-39"></a><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/protected-route-only-jwt&quot;</span><span class="p">)</span>
<a id="__codelineno-4-40" name="__codelineno-4-40" href="#__codelineno-4-40"></a><span class="k">def</span> <span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_user</span><span class="p">)):</span>
<a id="__codelineno-4-40" name="__codelineno-4-40" href="#__codelineno-4-40"></a><span class="k">def</span><span class="w"> </span><span class="nf">protected_route</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">current_active_user</span><span class="p">)):</span>
<a id="__codelineno-4-41" name="__codelineno-4-41" href="#__codelineno-4-41"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Hello, </span><span class="si">{</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">. You are authenticated with a JWT.&quot;</span>
</code></pre></div>
<h2 id="in-a-path-operation">In a path operation<a class="headerlink" href="#in-a-path-operation" title="Permanent link">&para;</a></h2>
<p>If you don't need the user in the route logic, you can use this syntax:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/protected-route&quot;</span><span class="p">,</span> <span class="n">dependencies</span><span class="o">=</span><span class="p">[</span><span class="n">Depends</span><span class="p">(</span><span class="n">current_superuser</span><span class="p">)])</span>
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="k">def</span> <span class="nf">protected_route</span><span class="p">():</span>
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="k">def</span><span class="w"> </span><span class="nf">protected_route</span><span class="p">():</span>
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a> <span class="k">return</span> <span class="s2">&quot;Hello, some user.&quot;</span>
</code></pre></div>
<p>You can read more about this <a href="https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/">in FastAPI docs</a>.</p>
@@ -1826,10 +1931,12 @@
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.instant", "navigation.top", "navigation.sections", "search.suggest", "search.highlight", "content.code.annotate"], "search": "../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.instant", "navigation.top", "navigation.sections", "search.suggest", "search.highlight", "content.code.annotate"], "search": "../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
<script src="../../assets/javascripts/bundle.88dd0f4e.min.js"></script>
<script src="../../assets/javascripts/bundle.f55a23d4.min.js"></script>
</body>