FastAPI SeaSurf


1. Define a CSRF Protection Middleware

from fastapi_seasurf import SeaSurfMiddleware

app.add_middleware(
    SeaSurfMiddleware,
    secret_key="YOUR_SECRET_KEY",
    csrf_cookie_name="csrftoken"
)

2. Generate CSRF Token

@app.get("/csrf-token")
async def get_csrf_token():
    token = await SeaSurfMiddleware.get_csrf_token()
    return {"csrf_token": token}

3. Inject CSRF Token into HTML

<form action="/submit" method="post">
  <input type="hidden" name="csrf_token" value="{{ csrf_token }}">
  <input type="text" name="username">
  <input type="submit" value="Submit">
</form>

4. Validate CSRF Token

5. Customize CSRF Cookie Name

6. Disable CSRF Protection

7. Define Multiple CSRF Protection Middlewares

8. Generate CSRF Token for AJAX Requests

9. Set CSRF Token Cookie Expires Time

10. Use SeaSurfMiddleware in an ASGI Application

11. Set CSRF Token Cookie SameSite Attribute

12. Generate CSRF Token for Single-Page Applications (SPAs)

13. Store CSRF Token in a Database

14. Use a Cache for CSRF Tokens

15. Customize CSRF Error Handler

16. Use Single-Use CSRF Tokens

17. Set CSRF Token Cookie Path

18. Use SeaSurfMiddleware with Nginx

19. Use SeaSurfMiddleware with gunicorn

20. Set CSRF Token Cookie Secure Attribute

21. Use SeaSurfMiddleware with Hypercorn

22. Use SeaSurfMiddleware with UVicorn

23. Use SeaSurfMiddleware with Daphne

24. Use SeaSurfMiddleware with Waitress

25. Use SeaSurfMiddleware with Bjoern

26. Use SeaSurfMiddleware with Gevent

27. Use SeaSurfMiddleware with Twisted

28. Use SeaSurfMiddleware with Tornado

29. Use SeaSurfMiddleware with Zappa

30. Use SeaSurfMiddleware with Zeit Now

31. Use SeaSurfMiddleware with Heroku

32. Use SeaSurfMiddleware with AWS Lambda

33. Use SeaSurfMiddleware with Azure Functions

34. Use SeaSurfMiddleware with Google Cloud Functions

35. Use SeaSurfMiddleware with IBM Cloud Functions

36. Use SeaSurfMiddleware with Oracle Cloud Functions