<aside> 🔐
Overview of authentication approaches in the system: quick summary, session vs token comparison, and Django implementation details.
</aside>
| Criterion | Session-based | Token-based (JWT) |
|---|---|---|
| Server state | Session stored on server | Stateless on server |
| Clients | Mostly browsers (cookies) | Web, mobile, IoT, inter-service |
| Scalability | Needs shared store or sticky sessions | Easier horizontal scaling |
| Revocation | Terminate session server-side | Short exp, refresh tokens, blacklist |
| Risks | CSRF, cookie XSS | Token theft, XSS, client storage |
| When to choose | Traditional web, admin UIs | SPAs, mobile apps, public APIs |
from django.contrib.auth import authenticate, login, logout
def login_view(request):
if request.method == 'POST':
user = authenticate(request, username=u, password=p)
if user:
login(request, user)
...
def logout_view(request):
logout(request)