@@ -44,3 +44,37 @@ protection is a choice you will have to make.
44
44
Here is an example of what this would look like:
45
45
46
46
.. literalinclude :: ../examples/csrf_protection_with_cookies.py
47
+
48
+ By default, the CSRF double submit values are sent back as additional cookies
49
+ to the caller. If you prefer, you can disable that, and send them back directly
50
+ to the caller, like such:
51
+
52
+ .. code-block :: python
53
+
54
+ app.config(' JWT_CSRF_IN_COOKIES' ) = False
55
+ # ...
56
+ # ...
57
+ # ...
58
+ @app.route (' /token/auth' , methods = [' POST' ])
59
+ def login ():
60
+ username = request.json.get(' username' , None )
61
+ password = request.json.get(' password' , None )
62
+ if username != ' test' or password != ' test' :
63
+ return jsonify({' login' : False }), 401
64
+
65
+ # Create the tokens we will be sending back to the user
66
+ access_token = create_access_token(identity = username)
67
+ refresh_token = create_refresh_token(identity = username)
68
+
69
+ # Return the double submit values in the resulting JSON
70
+ # instead of in additional cookies
71
+ resp = jsonify({
72
+ ' access_csrf' : get_csrf_token(access_token),
73
+ ' refresh_csrf' : get_csrf_token(refresh_token)
74
+ })
75
+
76
+ # We still need to call these functions to set the
77
+ # JWTs in the cookies
78
+ set_access_cookies(resp, access_token)
79
+ set_refresh_cookies(resp, refresh_token)
80
+ return resp, 200
0 commit comments