Sessions

Gerenciamento de sessões de usuário.

Configuração

SESSION_COOKIE_NAME=velox_sid
SESSION_EXPIRE_SECONDS=86400
SESSION_COOKIE_SECURE=false
SESSION_COOKIE_SAMESITE=Lax

Server-Side Sessions (Recomendado)

Dados armazenados no cache, apenas o ID no cookie:

from velox.session import SessionManager

sessions = SessionManager(server_side=True)

@app.get('/perfil')
def perfil(req, res):
    session = sessions.get_session(req, res)

    if not session.get('user_id'):
        res.redirect('/login')
        return

    res.json({'user_id': session.get('user_id')})

Uso da Sessão

@app.get('/login')
def login(req, res):
    session = sessions.get_session(req, res)

    # Salvar dados
    session['user_id'] = 123
    session['username'] = 'joao'
    session.save()

    res.json({'status': 'logged in'})

@app.get('/logout')
def logout(req, res):
    session = sessions.get_session(req, res)
    session.destroy()
    res.redirect('/')

Métodos da Session

session = sessions.get_session(req, res)

# Obter valor
user_id = session.get('user_id')
user_id = session['user_id']

# Definir valor
session.set('key', 'value')
session['key'] = 'value'

# Remover valor
session.pop('key')
del session['key']

# Verificar existência
if 'key' in session:
    print('Existe')

# Salvar no cookie
session.save()

# Destruir sessão
session.destroy()

# Rotacionar sessão (novo ID, mesmos dados)
session.rotate()

Client-Side Sessions (Legado)

Dados assinados no próprio cookie:

from velox.session import SessionManager

sessions = SessionManager(server_side=False)

SessionManager

from velox.session import SessionManager

# Server-side (padrão) - recomendado
sessions = SessionManager(server_side=True)

# Client-side (legado)
sessions = SessionManager(server_side=False, secret_key='sua-chave')

Combine com Auth

from velox.auth import authenticate, login, logout
from velox.session import SessionManager

sessions = SessionManager()

@app.post('/login')
def do_login(req, res):
    user = authenticate(req.form.get('username'), req.form.get('password'))

    if user:
        # Login + salvar na sessão
        login(req, user)
        session = sessions.get_session(req, res)
        session['user_id'] = user.id
        session['roles'] = user.roles
        session.save()

        res.redirect('/dashboard')
    else:
        res.json({'error': 'Credenciais inválidas'}, status=401)