Я нашел TimedJSONWebSignatureSerializer
и URLSafeTimedSerializer
.Интересно, почему существуют эти два метода?Как пользователь этой библиотеки, какие причины выбрать один или другой?
Что я пробовал
Я даже не нашел TimedJSONWebSignatureSerializer
в документах , но только что-то общее о JSON Web Signatures .
Просмотр наследования не помог:
TimedJSONWebSignatureSerializer
наследуется от JSONWebSignatureSerializer
URLSafeTimedSerializer
наследуется от URLSafeSerializerMixin
, TimedSerializer
Глядя на конструкторы , у меня сложилось впечатление, что оба могут быть для одного и того же варианта использования, но, возможно, веб-подписи JSON стандартизированы, тогда как другиеодин не так?
Глядя на использование :
from itsdangerous import TimedJSONWebSignatureSerializer, URLSafeTimedSerializer
data = {"id": 42, "op": "foobar"}
max_age_s = 123
s1 = TimedJSONWebSignatureSerializer('secret', expires_in=max_age_s)
s1_dumped = s1.dumps(data)
s1_loaded = s1.loads(s1_dumped)
s2 = URLSafeTimedSerializer('secret')
s2_dumped = s2.dumps(data)
s2_loaded = s2.loads(s2_dumped, max_age=max_age_s)
Тогда
>>> s1_dumped
b'eyJhbGciOiJIUzUxMiIsImlhdCI6MTU2MTEwNDU0NSwiZXhwIjoxNTYxMTA4MTQ1fQ.eyJpZCI6NDIsIm9wIjoiZm9vYmFyIn0.sux9j4OpBc7-se16WSrZvp-bll5ZeyCQR_CumSE7jPQ9-w_kTqpr0OtwhJp8S766Xt1W3fKSE-dl2z8q9ZAhzg'
>>> s2_dumped
'eyJpZCI6NDIsIm9wIjoiZm9vYmFyIn0.XQyQoQ.-6n5Jw6TWz8tsyfgagyS5_fHjAY'
>>> len(s1_dumped)
185
>>> len(s2_dumped)
66
Следовательно, JSON Web Signature намного длиннее.Что ты выигрываешь, имея это?