Skip to content
This repository was archived by the owner on Aug 3, 2024. It is now read-only.

Commit 427aac6

Browse files
committed
Drop use of CSRF token, make compatible with Django 4.1 update
1 parent 14d42b6 commit 427aac6

File tree

2 files changed

+3
-29
lines changed

2 files changed

+3
-29
lines changed

rest_framework_microservice/views.py

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from datetime import datetime
22
from django.conf import settings
33
from .settings import rest_microservice_settings
4-
from django.middleware import csrf
54
from rest_framework import status
65
from rest_framework.response import Response
76
from rest_framework.views import APIView
@@ -20,18 +19,7 @@ class RefreshTokenUsingCookieMixin:
2019

2120
def set_cookie_header_in_response(self, response, refresh_token, refresh_expiry):
2221
expires = datetime.fromtimestamp(refresh_expiry)
23-
# set matching pair of csrf token in cookie and in response body
24-
csrf_token = self.get_csrf_token()
25-
response.data.update({"CSRF_token": csrf_token})
26-
response.set_signed_cookie(key='CSRF_token',
27-
value=csrf_token,
28-
salt=rest_microservice_settings.COOKIE_SALT,
29-
expires=expires,
30-
httponly=True,
31-
samesite='strict',
32-
secure=not settings.DEBUG,
33-
path=rest_microservice_settings.REFRESH_COOKIE_PATH)
34-
# set refresh token
22+
3523
response.set_signed_cookie(key=rest_microservice_settings.REFRESH_COOKIE_NAME,
3624
value=refresh_token,
3725
salt=rest_microservice_settings.COOKIE_SALT,
@@ -43,34 +31,20 @@ def set_cookie_header_in_response(self, response, refresh_token, refresh_expiry)
4331
@staticmethod
4432
def get_token_from_cookie(request):
4533
try:
46-
csrf_from_cookie = request.get_signed_cookie('CSRF_token', salt=rest_microservice_settings.COOKIE_SALT)
47-
csrf_from_body = request.data.get('CSRF_token')
4834
token = request.get_signed_cookie(rest_microservice_settings.REFRESH_COOKIE_NAME,
4935
salt=rest_microservice_settings.COOKIE_SALT)
50-
except KeyError:
51-
raise InvalidToken()
52-
53-
if csrf_from_cookie is None or csrf_from_body is None:
54-
raise InvalidToken()
55-
56-
if csrf._does_token_match(csrf_from_cookie, csrf_from_body) is False:
36+
except KeyError as e:
5737
raise InvalidToken()
5838

5939
return token
6040

6141
@staticmethod
6242
def get_delete_cookie_response(status_code=status.HTTP_401_UNAUTHORIZED):
6343
response = Response(status=status_code)
64-
response.delete_cookie('CSRF_token', path=rest_microservice_settings.REFRESH_COOKIE_PATH)
6544
response.delete_cookie(key=rest_microservice_settings.REFRESH_COOKIE_NAME,
6645
path=rest_microservice_settings.REFRESH_COOKIE_PATH)
6746
return response
6847

69-
@staticmethod
70-
def get_csrf_token():
71-
"""Returns a csrf token."""
72-
return csrf._mask_cipher_secret(csrf._get_new_csrf_string())
73-
7448

7549
class TokenLogIn(TokenObtainPairView, RefreshTokenUsingCookieMixin):
7650
"""

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = django-rest-microservice
3-
version = 1.1
3+
version = 1.2
44
description = Facilitating microservice architecture in Django REST framework
55
long_description = file: README.md
66
url = https://github.com/oscarychen/django-rest-microservice

0 commit comments

Comments
 (0)