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)