dbbasic-sessions
Stateless session management using signed cookies for Python web applications.
Philosophy
"Compute, don't store. Verify, don't persist."
Sessions are temporary authentication state. Following Unix and CGI principles: don't store temporary state, compute it.
Features
- Stateless: No server storage for sessions
- Simple: 15 lines of core code
- Fast: Pure computation, no I/O
- Secure: HMAC-SHA256 signed tokens
- CGI-Perfect: Each request independent, no shared state
- Zero Dependencies: Python stdlib only
Installation
pip install dbbasic-sessions
Quick Start
from dbbasic_sessions import create_session, get_session, destroy_session
# Login - create session
token = create_session(user_id=42)
response.set_cookie('session', token, httponly=True, secure=True)
# Verify session
user_id = get_session(request.cookies.get('session'))
if user_id:
user = User.get(user_id) # Get from database
return render('dashboard', user=user)
# Logout
destroy_session(token) # No-op server-side
response.delete_cookie('session')
API
create_session(user_id, ttl=2592000)
Create a signed session token.
- user_id: User identifier (str or int)
- ttl: Time-to-live in seconds (default: 30 days)
- Returns: Signed token string
get_session(token)
Verify token and extract user ID.
- token: Session token from cookie
- Returns: User ID string, or None if invalid/expired
destroy_session(token)
Logout (no-op server-side, client deletes cookie).
- token: Session token (unused)
- Returns: None
Configuration
Set a secret key in your environment:
export SECRET_KEY="your-secret-key-here"
Generate a secure secret key:
import secrets
print(secrets.token_hex(32))
Security
- Uses HMAC-SHA256 for cryptographic signing
- Timing-safe signature comparison
- Supports HTTPS-only, HttpOnly, and SameSite cookie flags
- Short TTL recommended (1-30 days)
Performance
- Create session: 0.01ms
- Verify session: 0.01ms
- Memory usage: 0 bytes (no server storage)
- Scales: Infinitely (stateless)
Why Signed Cookies?
- Unix philosophy: Don't store temporary state
- CGI philosophy: Stateless processes
- Industry standard: Flask, Rails default
- Simple: 15 lines vs 20-30 with storage
- Fast: No I/O, pure computation
- Scales: Infinite horizontal scaling
License
MIT License
Metadata
Release files for dbbasic-sessions 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dbbasic_sessions-3.0.0.tar.gz | 9.4 kB | Without provenance | Details for dbbasic_sessions-3.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dbbasic_sessions-3.0.0-py3-none-any.whl | Python 3 | none | any | Details for dbbasic_sessions-3.0.0-py3-none-any.whl |
Total release size: 20.5 kB
Release files / dbbasic_sessions-3.0.0.tar.gz
| Download URL | dbbasic_sessions-3.0.0.tar.gz |
|---|---|
| Size | 9.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
50aa1f9195c1003c7c4faf9711a6c3cfea00533c7e2da9c2a63e480f91114e16
|
|
BLAKE2b-256 checksum How to use checksums |
638bc34ef0b21ea39b1352dc2887c036d8f6210a86e24a6adcf508cdfd0eb201
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.1
|
Release files / dbbasic_sessions-3.0.0-py3-none-any.whl
| Download URL | dbbasic_sessions-3.0.0-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fffa475f8333c6d9a4dbaf1baa8b906b2b48fc8d5ab3a5064a9d3924a5fc5bf4
|
|
BLAKE2b-256 checksum How to use checksums |
a4518ba25be1bc3b83cb95fc0801592108537236ec87bc22b5e377bec196ea81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.1
|
Security for dbbasic-sessions 3.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.