1
1
from datetime import datetime
2
2
from django .conf import settings
3
3
from .settings import rest_microservice_settings
4
- from django .middleware import csrf
5
4
from rest_framework import status
6
5
from rest_framework .response import Response
7
6
from rest_framework .views import APIView
@@ -20,18 +19,7 @@ class RefreshTokenUsingCookieMixin:
20
19
21
20
def set_cookie_header_in_response (self , response , refresh_token , refresh_expiry ):
22
21
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
+
35
23
response .set_signed_cookie (key = rest_microservice_settings .REFRESH_COOKIE_NAME ,
36
24
value = refresh_token ,
37
25
salt = rest_microservice_settings .COOKIE_SALT ,
@@ -43,34 +31,20 @@ def set_cookie_header_in_response(self, response, refresh_token, refresh_expiry)
43
31
@staticmethod
44
32
def get_token_from_cookie (request ):
45
33
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' )
48
34
token = request .get_signed_cookie (rest_microservice_settings .REFRESH_COOKIE_NAME ,
49
35
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 :
57
37
raise InvalidToken ()
58
38
59
39
return token
60
40
61
41
@staticmethod
62
42
def get_delete_cookie_response (status_code = status .HTTP_401_UNAUTHORIZED ):
63
43
response = Response (status = status_code )
64
- response .delete_cookie ('CSRF_token' , path = rest_microservice_settings .REFRESH_COOKIE_PATH )
65
44
response .delete_cookie (key = rest_microservice_settings .REFRESH_COOKIE_NAME ,
66
45
path = rest_microservice_settings .REFRESH_COOKIE_PATH )
67
46
return response
68
47
69
- @staticmethod
70
- def get_csrf_token ():
71
- """Returns a csrf token."""
72
- return csrf ._mask_cipher_secret (csrf ._get_new_csrf_string ())
73
-
74
48
75
49
class TokenLogIn (TokenObtainPairView , RefreshTokenUsingCookieMixin ):
76
50
"""
0 commit comments