Quickstart

Login, Logout and login required

This is a quick example that has a route to log users in, another to log them out and finally a route that can only be accessed by logged in users.

from quart import Quart, render_template_string, websocket
from quart_auth import (
    AuthUser, AuthManager, current_user, login_required, login_user, logout_user
)

app = Quart(__name__)
app.secret_key = "secret key"  # Do not use this key

AuthManager(app)

@app.route("/login")
async def login():
    # Check Credentials here, e.g. username & password.
    ...
    # We'll assume the user has an identifying ID equal to 2
    login_user(AuthUser(2))
    ...

@app.route("/logout")
async def logout():
    logout_user()
    ...

@app.route("/")
@login_required
async def restricted_route():
    current_user.auth_id  # Will be 2 given the login_user code above
    ...

@app.route("/hello")
async def hello():
    return await render_template_string("""
    {% if current_user.is_authenticated %}
      Hello logged in user
    {% else %}
      Hello logged out user
    {% endif %}
    """)

@app.websocket("/ws")
@login_required
async def ws():
     await websocket.send(f"Hello {current_user.auth_id}")
     ...