mirror of
https://github.com/fastapi-users/fastapi-users.git
synced 2026-03-13 07:49:55 +08:00
Automated deployment: Tue Sep 21 06:29:27 UTC 2021 eb47dc8e75
This commit is contained in:
@@ -7,9 +7,9 @@
|
||||
<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.2, mkdocs-material-7.2.7" name="generator"/>
|
||||
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.8" name="generator"/>
|
||||
<title>Get current user - FastAPI Users</title>
|
||||
<link href="../../assets/stylesheets/main.3c7cdd75.min.css" rel="stylesheet"/>
|
||||
<link href="../../assets/stylesheets/main.92558b1b.min.css" rel="stylesheet"/>
|
||||
<link href="../../assets/stylesheets/palette.3f5d1f46.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"/>
|
||||
@@ -356,6 +356,11 @@
|
||||
Get the current active superuser
|
||||
</a>
|
||||
</li>
|
||||
<li class="md-nav__item">
|
||||
<a class="md-nav__link" href="#dynamically-enable-authentication-backends">
|
||||
Dynamically enable authentication backends
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
@@ -465,6 +470,11 @@
|
||||
Get the current active superuser
|
||||
</a>
|
||||
</li>
|
||||
<li class="md-nav__item">
|
||||
<a class="md-nav__link" href="#dynamically-enable-authentication-backends">
|
||||
Dynamically enable authentication backends
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
@@ -493,6 +503,7 @@
|
||||
<li><code>active</code>: If <code>True</code>, throw <code>401 Unauthorized</code> if the authenticated user is inactive. Defaults to <code>False</code>.</li>
|
||||
<li><code>verified</code>: If <code>True</code>, throw <code>403 Forbidden</code> if the authenticated user is not verified. Defaults to <code>False</code>.</li>
|
||||
<li><code>superuser</code>: If <code>True</code>, throw <code>403 Forbidden</code> if the authenticated user is not a superuser. Defaults to <code>False</code>.</li>
|
||||
<li><code>get_enabled_backends</code>: Optional dependency callable returning a list of enabled authentication backends. Useful if you want to dynamically enable some authentication backends based on external logic, like a configuration in database. By default, all specified authentication backends are enabled. <em>Please not however that every backends will appear in the OpenAPI documentation, as FastAPI resolves it statically.</em></li>
|
||||
</ul>
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Create it once and reuse it</p>
|
||||
@@ -529,6 +540,39 @@
|
||||
<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>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"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">"</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">¶</a></h3>
|
||||
<div class="admonition warning">
|
||||
<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><span class="kn">from</span> <span class="nn">fastapi</span> <span class="kn">import</span> <span class="n">Request</span>
|
||||
<span class="kn">from</span> <span class="nn">fastapi_users.authentication</span> <span class="kn">import</span> <span class="n">CookieAuthentication</span><span class="p">,</span> <span class="n">JWTAuthentication</span>
|
||||
|
||||
<span class="n">SECRET</span> <span class="o">=</span> <span class="s2">"SECRET"</span>
|
||||
<span class="n">jwt_authentication</span> <span class="o">=</span> <span class="n">JWTAuthentication</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>
|
||||
<span class="n">cookie_authentication</span> <span class="o">=</span> <span class="n">CookieAuthentication</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>
|
||||
|
||||
|
||||
<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>
|
||||
<span class="sd">"""Return the enabled dependencies following custom logic."""</span>
|
||||
<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">"/protected-route-only-jwt"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">jwt_authentication</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">cookie_authentication</span><span class="p">,</span> <span class="n">jwt_authentication</span><span class="p">]</span>
|
||||
|
||||
|
||||
<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> <span class="n">get_enabled_backends</span><span class="o">=</span><span class="n">get_enabled_backends</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/protected-route"</span><span class="p">)</span>
|
||||
<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>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"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."</span>
|
||||
|
||||
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/protected-route-only-jwt"</span><span class="p">)</span>
|
||||
<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>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"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."</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">¶</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><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"/protected-route"</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>
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
<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.2, mkdocs-material-7.2.7" name="generator"/>
|
||||
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.8" name="generator"/>
|
||||
<title>Flow - FastAPI Users</title>
|
||||
<link href="../../assets/stylesheets/main.3c7cdd75.min.css" rel="stylesheet"/>
|
||||
<link href="../../assets/stylesheets/main.92558b1b.min.css" rel="stylesheet"/>
|
||||
<link href="../../assets/stylesheets/palette.3f5d1f46.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"/>
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
<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.2, mkdocs-material-7.2.7" name="generator"/>
|
||||
<meta content="mkdocs-1.2.2, mkdocs-material-7.2.8" name="generator"/>
|
||||
<title>Routes - FastAPI Users</title>
|
||||
<link href="../../assets/stylesheets/main.3c7cdd75.min.css" rel="stylesheet"/>
|
||||
<link href="../../assets/stylesheets/main.92558b1b.min.css" rel="stylesheet"/>
|
||||
<link href="../../assets/stylesheets/palette.3f5d1f46.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"/>
|
||||
|
||||
Reference in New Issue
Block a user