mirror of
https://github.com/fastapi-users/fastapi-users.git
synced 2026-03-13 07:49:55 +08:00
Automated deployment: Wed Nov 27 08:52:04 UTC 2019 d5b249e90b
This commit is contained in:
@@ -636,7 +636,7 @@
|
||||
</span>
|
||||
|
||||
<span class="n">engine</span> <span class="o">=</span> <span class="n">sqlalchemy</span><span class="o">.</span><span class="n">create_engine</span><span class="p">(</span>
|
||||
<span class="n">DATABASE_URL</span><span class="p">,</span> <span class="n">connect_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"check_same_thread"</span><span class="p">:</span> <span class="bp">False</span><span class="p">}</span>
|
||||
<span class="n">DATABASE_URL</span><span class="p">,</span> <span class="n">connect_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"check_same_thread"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">Base</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">create_all</span><span class="p">(</span><span class="n">engine</span><span class="p">)</span>
|
||||
@@ -647,14 +647,14 @@
|
||||
<span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">"startup"</span><span class="p">)</span>
|
||||
<span class="n">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span>
|
||||
<span class="n">await</span> <span class="n">database</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"startup"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="n">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="n">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
<p>As you can see, <strong>FastAPI Users</strong> provides a mixin that will include base fields for our User table. You can of course add you own fields there to fit to your needs!</p>
|
||||
@@ -678,7 +678,7 @@
|
||||
|
||||
|
||||
<span class="hll"><span class="n">engine</span> <span class="o">=</span> <span class="n">sqlalchemy</span><span class="o">.</span><span class="n">create_engine</span><span class="p">(</span>
|
||||
</span><span class="hll"> <span class="n">DATABASE_URL</span><span class="p">,</span> <span class="n">connect_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"check_same_thread"</span><span class="p">:</span> <span class="bp">False</span><span class="p">}</span>
|
||||
</span><span class="hll"> <span class="n">DATABASE_URL</span><span class="p">,</span> <span class="n">connect_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"check_same_thread"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
|
||||
</span><span class="hll"><span class="p">)</span>
|
||||
</span><span class="hll">
|
||||
</span><span class="hll"><span class="n">Base</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">create_all</span><span class="p">(</span><span class="n">engine</span><span class="p">)</span>
|
||||
@@ -689,14 +689,14 @@
|
||||
<span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">"startup"</span><span class="p">)</span>
|
||||
<span class="n">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span>
|
||||
<span class="n">await</span> <span class="n">database</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"startup"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="n">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="n">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
<div class="admonition tip">
|
||||
@@ -723,7 +723,7 @@
|
||||
|
||||
|
||||
<span class="n">engine</span> <span class="o">=</span> <span class="n">sqlalchemy</span><span class="o">.</span><span class="n">create_engine</span><span class="p">(</span>
|
||||
<span class="n">DATABASE_URL</span><span class="p">,</span> <span class="n">connect_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"check_same_thread"</span><span class="p">:</span> <span class="bp">False</span><span class="p">}</span>
|
||||
<span class="n">DATABASE_URL</span><span class="p">,</span> <span class="n">connect_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"check_same_thread"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">Base</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">create_all</span><span class="p">(</span><span class="n">engine</span><span class="p">)</span>
|
||||
@@ -734,14 +734,14 @@
|
||||
<span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">"startup"</span><span class="p">)</span>
|
||||
<span class="n">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span>
|
||||
<span class="n">await</span> <span class="n">database</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"startup"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="n">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="n">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
<p>Notice that we declare the <code>users</code> variable, which is the actual SQLAlchemy table behind the table class. We also use our <code>database</code> instance, which allows us to do asynchronous request to the database.</p>
|
||||
|
||||
@@ -557,7 +557,7 @@
|
||||
|
||||
|
||||
<span class="n">engine</span> <span class="o">=</span> <span class="n">sqlalchemy</span><span class="o">.</span><span class="n">create_engine</span><span class="p">(</span>
|
||||
<span class="n">DATABASE_URL</span><span class="p">,</span> <span class="n">connect_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"check_same_thread"</span><span class="p">:</span> <span class="bp">False</span><span class="p">}</span>
|
||||
<span class="n">DATABASE_URL</span><span class="p">,</span> <span class="n">connect_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"check_same_thread"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">Base</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">create_all</span><span class="p">(</span><span class="n">engine</span><span class="p">)</span>
|
||||
@@ -577,24 +577,24 @@
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">include_router</span><span class="p">(</span><span class="n">fastapi_users</span><span class="o">.</span><span class="n">router</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"/users"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">"users"</span><span class="p">])</span>
|
||||
|
||||
|
||||
<span class="nd">@fastapi_users.on_after_register</span><span class="p">()</span>
|
||||
<span class="nd">@fastapi_users</span><span class="o">.</span><span class="n">on_after_register</span><span class="p">()</span>
|
||||
<span class="k">def</span> <span class="nf">on_after_register</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"User {user.id} has registered."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"User </span><span class="si">{user.id}</span><span class="s2"> has registered."</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@fastapi_users.on_after_forgot_password</span><span class="p">()</span>
|
||||
<span class="nd">@fastapi_users</span><span class="o">.</span><span class="n">on_after_forgot_password</span><span class="p">()</span>
|
||||
<span class="k">def</span> <span class="nf">on_after_forgot_password</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"User {user.id} has forgot their password. Reset token: {token}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"User </span><span class="si">{user.id}</span><span class="s2"> has forgot their password. Reset token: </span><span class="si">{token}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">"startup"</span><span class="p">)</span>
|
||||
<span class="n">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span>
|
||||
<span class="n">await</span> <span class="n">database</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"startup"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">startup</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="nd">@app.on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="n">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="n">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s2">"shutdown"</span><span class="p">)</span>
|
||||
<span class="k">async</span> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
|
||||
<span class="k">await</span> <span class="n">database</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span>
|
||||
</pre></div></div>
|
||||
<input name="__tabs_1" type="radio" id="__tab_1_1" />
|
||||
<label for="__tab_1_1">MongoDB</label>
|
||||
@@ -627,14 +627,14 @@
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">include_router</span><span class="p">(</span><span class="n">fastapi_users</span><span class="o">.</span><span class="n">router</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"/users"</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">"users"</span><span class="p">])</span>
|
||||
|
||||
|
||||
<span class="nd">@fastapi_users.on_after_register</span><span class="p">()</span>
|
||||
<span class="nd">@fastapi_users</span><span class="o">.</span><span class="n">on_after_register</span><span class="p">()</span>
|
||||
<span class="k">def</span> <span class="nf">on_after_register</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"User {user.id} has registered."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"User </span><span class="si">{user.id}</span><span class="s2"> has registered."</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@fastapi_users.on_after_forgot_password</span><span class="p">()</span>
|
||||
<span class="nd">@fastapi_users</span><span class="o">.</span><span class="n">on_after_forgot_password</span><span class="p">()</span>
|
||||
<span class="k">def</span> <span class="nf">on_after_forgot_password</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"User {user.id} has forgot their password. Reset token: {token}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"User </span><span class="si">{user.id}</span><span class="s2"> has forgot their password. Reset token: </span><span class="si">{token}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div></div>
|
||||
</div>
|
||||
<h2 id="what-now">What now?<a class="headerlink" href="#what-now" title="Permanent link">¶</a></h2>
|
||||
|
||||
@@ -631,9 +631,9 @@
|
||||
<p>Typically, you'll want to <strong>send a welcome e-mail</strong> or add it to your marketing analytics pipeline.</p>
|
||||
<p>You can define it as an <code>async</code> or standard method.</p>
|
||||
<p>Example:</p>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@fastapi_users.on_after_register</span><span class="p">()</span>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@fastapi_users</span><span class="o">.</span><span class="n">on_after_register</span><span class="p">()</span>
|
||||
<span class="k">def</span> <span class="nf">on_after_register</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"User {user.id} has registered."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"User </span><span class="si">{user.id}</span><span class="s2"> has registered."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
<h3 id="after-forgot-password">After forgot password<a class="headerlink" href="#after-forgot-password" title="Permanent link">¶</a></h3>
|
||||
@@ -641,9 +641,9 @@
|
||||
<p>Typically, you'll want to <strong>send an e-mail</strong> with the link (and the token) that allows the user to reset their password.</p>
|
||||
<p>You can define it as an <code>async</code> or standard method.</p>
|
||||
<p>Example:</p>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@fastapi_users.on_after_forgot_password</span><span class="p">()</span>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@fastapi_users</span><span class="o">.</span><span class="n">on_after_forgot_password</span><span class="p">()</span>
|
||||
<span class="k">def</span> <span class="nf">on_after_forgot_password</span><span class="p">(</span><span class="n">user</span><span class="p">:</span> <span class="n">User</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"User {user.id} has forgot their password. Reset token: {token}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"User </span><span class="si">{user.id}</span><span class="s2"> has forgot their password. Reset token: </span><span class="si">{token}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
<h2 id="next-steps">Next steps<a class="headerlink" href="#next-steps" title="Permanent link">¶</a></h2>
|
||||
|
||||
File diff suppressed because one or more lines are too long
22
sitemap.xml
22
sitemap.xml
@@ -2,57 +2,57 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>None</loc>
|
||||
<lastmod>2019-11-25</lastmod>
|
||||
<lastmod>2019-11-27</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
</urlset>
|
||||
BIN
sitemap.xml.gz
BIN
sitemap.xml.gz
Binary file not shown.
@@ -580,28 +580,28 @@
|
||||
</div>
|
||||
<h2 id="get_current_user"><code>get_current_user</code><a class="headerlink" href="#get_current_user" title="Permanent link">¶</a></h2>
|
||||
<p>Get the current user (<strong>active or not</strong>). Will throw a <code>401 Unauthorized</code> if missing or wrong credentials.</p>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@app.get</span><span class="p">(</span><span class="s1">'/protected-route'</span><span class="p">)</span>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'/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">fastapi_users</span><span class="o">.</span><span class="n">get_current_user</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s1">'Hello, {user.email}'</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s1">'Hello, </span><span class="si">{user.email}</span><span class="s1">'</span>
|
||||
</pre></div>
|
||||
|
||||
<h2 id="get_current_active_user"><code>get_current_active_user</code><a class="headerlink" href="#get_current_active_user" title="Permanent link">¶</a></h2>
|
||||
<p>Get the current active user. Will throw a <code>401 Unauthorized</code> if missing or wrong credentials or if the user is not active.</p>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@app.get</span><span class="p">(</span><span class="s1">'/protected-route'</span><span class="p">)</span>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'/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">fastapi_users</span><span class="o">.</span><span class="n">get_current_active_user</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s1">'Hello, {user.email}'</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s1">'Hello, </span><span class="si">{user.email}</span><span class="s1">'</span>
|
||||
</pre></div>
|
||||
|
||||
<h2 id="get_current_superuser"><code>get_current_superuser</code><a class="headerlink" href="#get_current_superuser" title="Permanent link">¶</a></h2>
|
||||
<p>Get the current superuser. Will throw a <code>401 Unauthorized</code> if missing or wrong credentials or if the user is not active. Will throw a <code>403 Forbidden</code> if the user is not a superuser.</p>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@app.get</span><span class="p">(</span><span class="s1">'/protected-route'</span><span class="p">)</span>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'/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">fastapi_users</span><span class="o">.</span><span class="n">get_current_superuser</span><span class="p">)):</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s1">'Hello, {user.email}'</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s1">'Hello, </span><span class="si">{user.email}</span><span class="s1">'</span>
|
||||
</pre></div>
|
||||
|
||||
<h2 id="in-path-operation">In path operation<a class="headerlink" href="#in-path-operation" title="Permanent link">¶</a></h2>
|
||||
<p>If you don't need a user, you can use more clear way:</p>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@app.get</span><span class="p">(</span><span class="s1">'/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">fastapi_users</span><span class="o">.</span><span class="n">get_current_superuser</span><span class="p">)])</span>
|
||||
<div class="codehilite"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'/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">fastapi_users</span><span class="o">.</span><span class="n">get_current_superuser</span><span class="p">)])</span>
|
||||
<span class="k">def</span> <span class="nf">protected_route</span><span class="p">():</span>
|
||||
<span class="k">return</span> <span class="s1">'Hello, some user.'</span>
|
||||
</pre></div>
|
||||
|
||||
@@ -775,7 +775,7 @@
|
||||
<p>Login a user.</p>
|
||||
<div class="admonition abstract">
|
||||
<p class="admonition-title">Payload (<code>application/x-www-form-urlencoded</code>)</p>
|
||||
<div class="codehilite"><pre><span></span><span class="n">username</span><span class="o">=</span><span class="n">king</span><span class="p">.</span><span class="n">arthur</span><span class="nv">@camelot</span><span class="p">.</span><span class="n">bt</span><span class="o">&</span><span class="n">password</span><span class="o">=</span><span class="n">guinevere</span><span class="w"></span>
|
||||
<div class="codehilite"><pre><span></span><span class="err">username=king.arthur@camelot.bt&password=guinevere</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user