Skip to content

Commit 4a68942

Browse files
authoredNov 27, 2024
Merge pull request #168 from tecladocode/develop
Use string for identity in JWT
2 parents 1701703 + 0625b93 commit 4a68942

File tree

35 files changed

+56
-50
lines changed
  • docs/docs
    • 08_flask_jwt_extended
    • 09_flask_migrate
      • 02_add_flask_migrate_to_app
      • 03_initialize_database_flask_db_init
      • 04_change_models_generate_alembic_migration
    • 11_deploy_to_render/06_run_everything_docker_compose
    • 12_task_queues_emails
  • project
    • using-flask-restful/resources
    • using-flask-restx/resources
    • using-flask-smorest/resources

35 files changed

+56
-50
lines changed
 

‎docs/docs/08_flask_jwt_extended/07_login_users_rest_api/README.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ class UserLogin(MethodView):
2929
).first()
3030

3131
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
32-
access_token = create_access_token(identity=user.id)
32+
access_token = create_access_token(identity=str(user.id))
3333
return {"access_token": access_token}, 200
3434

3535
abort(401, message="Invalid credentials.")
3636
```
3737

38-
Here you can see the when we call `create_access_token(identity=user.id)` we pass in the user's `id`. This is what gets stored (among other things) inside the JWT, so when the client sends the JWT back on every request, we can tell who the JWT belongs to.
38+
Here you can see the when we call `create_access_token(identity=str(user.id))` we pass in the user's `id`. This is what gets stored (among other things) inside the JWT, so when the client sends the JWT back on every request, we can tell who the JWT belongs to.
39+
40+
**Update Nov 2024**: Before now, we used `identity=user.id`, but now we have to convert it to a string first.

‎docs/docs/08_flask_jwt_extended/07_login_users_rest_api/end/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def post(self, user_data):
3737
).first()
3838

3939
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
40-
access_token = create_access_token(identity=user.id)
40+
access_token = create_access_token(identity=str(user.id))
4141
return {"access_token": access_token}, 200
4242

4343
abort(401, message="Invalid credentials.")

‎docs/docs/08_flask_jwt_extended/08_protect_resources_with_jwt_required/end/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def post(self, user_data):
3737
).first()
3838

3939
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
40-
access_token = create_access_token(identity=user.id)
40+
access_token = create_access_token(identity=str(user.id))
4141
return {"access_token": access_token}, 200
4242

4343
abort(401, message="Invalid credentials.")

‎docs/docs/08_flask_jwt_extended/08_protect_resources_with_jwt_required/start/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def post(self, user_data):
3737
).first()
3838

3939
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
40-
access_token = create_access_token(identity=user.id)
40+
access_token = create_access_token(identity=str(user.id))
4141
return {"access_token": access_token}, 200
4242

4343
abort(401, message="Invalid credentials.")

‎docs/docs/08_flask_jwt_extended/09_jwt_claims_and_authorization/end/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def post(self, user_data):
3737
).first()
3838

3939
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
40-
access_token = create_access_token(identity=user.id)
40+
access_token = create_access_token(identity=str(user.id))
4141
return {"access_token": access_token}, 200
4242

4343
abort(401, message="Invalid credentials.")

‎docs/docs/08_flask_jwt_extended/09_jwt_claims_and_authorization/start/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def post(self, user_data):
3737
).first()
3838

3939
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
40-
access_token = create_access_token(identity=user.id)
40+
access_token = create_access_token(identity=str(user.id))
4141
return {"access_token": access_token}, 200
4242

4343
abort(401, message="Invalid credentials.")

‎docs/docs/08_flask_jwt_extended/10_logout_users_rest_api/end/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def post(self, user_data):
4242
).first()
4343

4444
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
45-
access_token = create_access_token(identity=user.id)
45+
access_token = create_access_token(identity=str(user.id))
4646
return {"access_token": access_token}, 200
4747

4848
abort(401, message="Invalid credentials.")

‎docs/docs/08_flask_jwt_extended/10_logout_users_rest_api/start/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def post(self, user_data):
3737
).first()
3838

3939
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
40-
access_token = create_access_token(identity=user.id)
40+
access_token = create_access_token(identity=str(user.id))
4141
return {"access_token": access_token}, 200
4242

4343
abort(401, message="Invalid credentials.")

‎docs/docs/08_flask_jwt_extended/12_token_refreshing_flask_jwt_extended/README.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,16 @@ class UserLogin(MethodView):
6464

6565
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
6666
# highlight-start
67-
access_token = create_access_token(identity=user.id, fresh=True)
67+
access_token = create_access_token(identity=str(user.id), fresh=True)
6868
refresh_token = create_refresh_token(user.id)
6969
return {"access_token": access_token, "refresh_token": refresh_token}, 200
7070
# highlight-end
7171

7272
abort(401, message="Invalid credentials.")
7373
```
7474

75+
**Update Nov 2024**: Before now, we used `identity=user.id`, but now we have to convert it to a string first.
76+
7577
## Writing the token refresh endpoint
7678

7779
When a user logs in, they will now have the access token and the refresh token.
@@ -91,6 +93,8 @@ class TokenRefresh(MethodView):
9193
return {"access_token": new_token}, 200
9294
```
9395

96+
**Note**: here we don't need to call `str(current_user)` because `get_jwt_identity()` returns what we previously stored, which is a string.
97+
9498
Note that above, we've told Flask-JWT-Extended that a refresh token is required with `@jwt_required(refresh=True)`. We'll do something similar for requiring fresh tokens in a second!
9599

96100
## Requiring a fresh token for certain endpoints

‎docs/docs/08_flask_jwt_extended/12_token_refreshing_flask_jwt_extended/end/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def post(self, user_data):
4444
).first()
4545

4646
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
47-
access_token = create_access_token(identity=user.id, fresh=True)
47+
access_token = create_access_token(identity=str(user.id), fresh=True)
4848
refresh_token = create_refresh_token(user.id)
4949
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5050

‎docs/docs/08_flask_jwt_extended/12_token_refreshing_flask_jwt_extended/end_video/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def post(self, user_data):
4444
).first()
4545

4646
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
47-
access_token = create_access_token(identity=user.id, fresh=True)
47+
access_token = create_access_token(identity=str(user.id), fresh=True)
4848
refresh_token = create_refresh_token(user.id)
4949
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5050

‎docs/docs/08_flask_jwt_extended/12_token_refreshing_flask_jwt_extended/start/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def post(self, user_data):
4242
).first()
4343

4444
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
45-
access_token = create_access_token(identity=user.id)
45+
access_token = create_access_token(identity=str(user.id))
4646
return {"access_token": access_token}, 200
4747

4848
abort(401, message="Invalid credentials.")

‎docs/docs/09_flask_migrate/02_add_flask_migrate_to_app/end/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def post(self, user_data):
4444
).first()
4545

4646
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
47-
access_token = create_access_token(identity=user.id, fresh=True)
47+
access_token = create_access_token(identity=str(user.id), fresh=True)
4848
refresh_token = create_refresh_token(user.id)
4949
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5050

‎docs/docs/09_flask_migrate/02_add_flask_migrate_to_app/start/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def post(self, user_data):
4444
).first()
4545

4646
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
47-
access_token = create_access_token(identity=user.id, fresh=True)
47+
access_token = create_access_token(identity=str(user.id), fresh=True)
4848
refresh_token = create_refresh_token(user.id)
4949
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5050

‎docs/docs/09_flask_migrate/03_initialize_database_flask_db_init/end/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def post(self, user_data):
4444
).first()
4545

4646
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
47-
access_token = create_access_token(identity=user.id, fresh=True)
47+
access_token = create_access_token(identity=str(user.id), fresh=True)
4848
refresh_token = create_refresh_token(user.id)
4949
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5050

‎docs/docs/09_flask_migrate/03_initialize_database_flask_db_init/start/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def post(self, user_data):
4444
).first()
4545

4646
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
47-
access_token = create_access_token(identity=user.id, fresh=True)
47+
access_token = create_access_token(identity=str(user.id), fresh=True)
4848
refresh_token = create_refresh_token(user.id)
4949
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5050

‎docs/docs/09_flask_migrate/04_change_models_generate_alembic_migration/end/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def post(self, user_data):
4444
).first()
4545

4646
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
47-
access_token = create_access_token(identity=user.id, fresh=True)
47+
access_token = create_access_token(identity=str(user.id), fresh=True)
4848
refresh_token = create_refresh_token(user.id)
4949
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5050

‎docs/docs/09_flask_migrate/04_change_models_generate_alembic_migration/start/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def post(self, user_data):
4444
).first()
4545

4646
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
47-
access_token = create_access_token(identity=user.id, fresh=True)
47+
access_token = create_access_token(identity=str(user.id), fresh=True)
4848
refresh_token = create_refresh_token(user.id)
4949
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5050

‎docs/docs/11_deploy_to_render/06_run_everything_docker_compose/end/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ def post(self, user_data):
3838
).first()
3939

4040
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
41-
access_token = create_access_token(identity=user.id, fresh=True)
42-
refresh_token = create_refresh_token(identity=user.id)
41+
access_token = create_access_token(identity=str(user.id), fresh=True)
42+
refresh_token = create_refresh_token(identity=str(user.id))
4343
return {"access_token": access_token, "refresh_token": refresh_token}
4444

4545
abort(401, message="Invalid credentials.")

‎docs/docs/11_deploy_to_render/06_run_everything_docker_compose/start/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ def post(self, user_data):
3838
).first()
3939

4040
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
41-
access_token = create_access_token(identity=user.id, fresh=True)
42-
refresh_token = create_refresh_token(identity=user.id)
41+
access_token = create_access_token(identity=str(user.id), fresh=True)
42+
refresh_token = create_refresh_token(identity=str(user.id))
4343
return {"access_token": access_token, "refresh_token": refresh_token}
4444

4545
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/01_send_emails_python_mailgun/end/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ def post(self, user_data):
6060
).first()
6161

6262
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
63-
access_token = create_access_token(identity=user.id, fresh=True)
64-
refresh_token = create_refresh_token(identity=user.id)
63+
access_token = create_access_token(identity=str(user.id), fresh=True)
64+
refresh_token = create_refresh_token(identity=str(user.id))
6565
return {"access_token": access_token, "refresh_token": refresh_token}
6666

6767
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/01_send_emails_python_mailgun/start/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ def post(self, user_data):
3838
).first()
3939

4040
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
41-
access_token = create_access_token(identity=user.id, fresh=True)
42-
refresh_token = create_refresh_token(identity=user.id)
41+
access_token = create_access_token(identity=str(user.id), fresh=True)
42+
refresh_token = create_refresh_token(identity=str(user.id))
4343
return {"access_token": access_token, "refresh_token": refresh_token}
4444

4545
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/02_send_email_user_registration/end/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ def post(self, user_data):
7373
).first()
7474

7575
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
76-
access_token = create_access_token(identity=user.id, fresh=True)
77-
refresh_token = create_refresh_token(identity=user.id)
76+
access_token = create_access_token(identity=str(user.id), fresh=True)
77+
refresh_token = create_refresh_token(identity=str(user.id))
7878
return {"access_token": access_token, "refresh_token": refresh_token}
7979

8080
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/02_send_email_user_registration/start/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ def post(self, user_data):
6060
).first()
6161

6262
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
63-
access_token = create_access_token(identity=user.id, fresh=True)
64-
refresh_token = create_refresh_token(identity=user.id)
63+
access_token = create_access_token(identity=str(user.id), fresh=True)
64+
refresh_token = create_refresh_token(identity=str(user.id))
6565
return {"access_token": access_token, "refresh_token": refresh_token}
6666

6767
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/04_populate_rq_task_queue/end/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def post(self, user_data):
6161
).first()
6262

6363
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
64-
access_token = create_access_token(identity=user.id, fresh=True)
65-
refresh_token = create_refresh_token(identity=user.id)
64+
access_token = create_access_token(identity=str(user.id), fresh=True)
65+
refresh_token = create_refresh_token(identity=str(user.id))
6666
return {"access_token": access_token, "refresh_token": refresh_token}
6767

6868
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/04_populate_rq_task_queue/start/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ def post(self, user_data):
7373
).first()
7474

7575
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
76-
access_token = create_access_token(identity=user.id, fresh=True)
77-
refresh_token = create_refresh_token(identity=user.id)
76+
access_token = create_access_token(identity=str(user.id), fresh=True)
77+
refresh_token = create_refresh_token(identity=str(user.id))
7878
return {"access_token": access_token, "refresh_token": refresh_token}
7979

8080
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/05_rq_background_worker/end/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def post(self, user_data):
6161
).first()
6262

6363
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
64-
access_token = create_access_token(identity=user.id, fresh=True)
65-
refresh_token = create_refresh_token(identity=user.id)
64+
access_token = create_access_token(identity=str(user.id), fresh=True)
65+
refresh_token = create_refresh_token(identity=str(user.id))
6666
return {"access_token": access_token, "refresh_token": refresh_token}
6767

6868
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/05_rq_background_worker/start/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def post(self, user_data):
6161
).first()
6262

6363
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
64-
access_token = create_access_token(identity=user.id, fresh=True)
65-
refresh_token = create_refresh_token(identity=user.id)
64+
access_token = create_access_token(identity=str(user.id), fresh=True)
65+
refresh_token = create_refresh_token(identity=str(user.id))
6666
return {"access_token": access_token, "refresh_token": refresh_token}
6767

6868
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/06_sending_html_emails/end/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def post(self, user_data):
6161
).first()
6262

6363
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
64-
access_token = create_access_token(identity=user.id, fresh=True)
65-
refresh_token = create_refresh_token(identity=user.id)
64+
access_token = create_access_token(identity=str(user.id), fresh=True)
65+
refresh_token = create_refresh_token(identity=str(user.id))
6666
return {"access_token": access_token, "refresh_token": refresh_token}
6767

6868
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/06_sending_html_emails/start/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def post(self, user_data):
6161
).first()
6262

6363
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
64-
access_token = create_access_token(identity=user.id, fresh=True)
65-
refresh_token = create_refresh_token(identity=user.id)
64+
access_token = create_access_token(identity=str(user.id), fresh=True)
65+
refresh_token = create_refresh_token(identity=str(user.id))
6666
return {"access_token": access_token, "refresh_token": refresh_token}
6767

6868
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/07_deploy_background_worker_render/end/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def post(self, user_data):
6161
).first()
6262

6363
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
64-
access_token = create_access_token(identity=user.id, fresh=True)
65-
refresh_token = create_refresh_token(identity=user.id)
64+
access_token = create_access_token(identity=str(user.id), fresh=True)
65+
refresh_token = create_refresh_token(identity=str(user.id))
6666
return {"access_token": access_token, "refresh_token": refresh_token}
6767

6868
abort(401, message="Invalid credentials.")

‎docs/docs/12_task_queues_emails/07_deploy_background_worker_render/start/resources/user.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def post(self, user_data):
6161
).first()
6262

6363
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
64-
access_token = create_access_token(identity=user.id, fresh=True)
65-
refresh_token = create_refresh_token(identity=user.id)
64+
access_token = create_access_token(identity=str(user.id), fresh=True)
65+
refresh_token = create_refresh_token(identity=str(user.id))
6666
return {"access_token": access_token, "refresh_token": refresh_token}
6767

6868
abort(401, message="Invalid credentials.")

‎project/using-flask-restful/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def post(self):
4242
user = UserModel.find_by_username(data["username"])
4343

4444
if user and pbkdf2_sha256.verify(data["password"], user.password):
45-
access_token = create_access_token(identity=user.id, fresh=True)
45+
access_token = create_access_token(identity=str(user.id), fresh=True)
4646
refresh_token = create_refresh_token(user.id)
4747
return {"access_token": access_token, "refresh_token": refresh_token}, 200
4848

‎project/using-flask-restx/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def post(self):
5252
user = UserModel.find_by_username(user_data["username"])
5353

5454
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
55-
access_token = create_access_token(identity=user.id, fresh=True)
55+
access_token = create_access_token(identity=str(user.id), fresh=True)
5656
refresh_token = create_refresh_token(user.id)
5757
return {"access_token": access_token, "refresh_token": refresh_token}, 200
5858

‎project/using-flask-smorest/resources/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def post(self, user_data):
4040
user = UserModel.find_by_username(user_data["username"])
4141

4242
if user and pbkdf2_sha256.verify(user_data["password"], user.password):
43-
access_token = create_access_token(identity=user.id, fresh=True)
43+
access_token = create_access_token(identity=str(user.id), fresh=True)
4444
refresh_token = create_refresh_token(user.id)
4545
return {"access_token": access_token, "refresh_token": refresh_token}, 200
4646

0 commit comments

Comments
 (0)