@@ -56,13 +56,7 @@ def get(self, request):
56
56
if session is None :
57
57
request .g ._session = SessionDict (request , {})
58
58
return request .g ._session
59
- try :
60
- session = jwt .decode (session , self .secret_key ,
61
- algorithms = ['HS256' ])
62
- except jwt .exceptions .PyJWTError : # pragma: no cover
63
- request .g ._session = SessionDict (request , {})
64
- else :
65
- request .g ._session = SessionDict (request , session )
59
+ request .g ._session = SessionDict (request , self .decode (session ))
66
60
return request .g ._session
67
61
68
62
def update (self , request , session ):
@@ -88,8 +82,7 @@ def index(request, session):
88
82
if not self .secret_key :
89
83
raise ValueError ('The session secret key is not configured' )
90
84
91
- encoded_session = jwt .encode (session , self .secret_key ,
92
- algorithm = 'HS256' )
85
+ encoded_session = self .encode (session )
93
86
94
87
@request .after_request
95
88
def _update_session (request , response ):
@@ -120,6 +113,18 @@ def _delete_session(request, response):
120
113
expires = 'Thu, 01 Jan 1970 00:00:01 GMT' )
121
114
return response
122
115
116
+ def encode (self , payload , secret_key = None ):
117
+ return jwt .encode (payload , secret_key or self .secret_key ,
118
+ algorithm = 'HS256' )
119
+
120
+ def decode (self , session , secret_key = None ):
121
+ try :
122
+ payload = jwt .decode (session , secret_key or self .secret_key ,
123
+ algorithms = ['HS256' ])
124
+ except jwt .exceptions .PyJWTError : # pragma: no cover
125
+ return {}
126
+ return payload
127
+
123
128
124
129
def with_session (f ):
125
130
"""Decorator that passes the user session to the route handler.
0 commit comments