Development #39745
Ne pas dépendre du cache pour la fonctionnalité "se reconnecter avec cet utilisateur"
0%
Description
Le jeton est posé dans le cache et ça fait que s'il y a du load balancing, avec chaque serveur son memcached, et que la requête derrière tombe sur un serveur différent, bim 404.
Fichiers
Demandes liées
Révisions associées
misc: add one-time token model (#39745)
misc: use one-time tokens instead of cache (#39745)
Historique
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Fichier 0002-misc-add-one-time-token-model-39745.patch 0002-misc-add-one-time-token-model-39745.patch ajouté
- Fichier 0001-misc-clean-dead-imports-39745.patch 0001-misc-clean-dead-imports-39745.patch ajouté
- Fichier 0003-misc-use-one-time-tokens-instead-of-cache-39745.patch 0003-misc-use-one-time-tokens-instead-of-cache-39745.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a environ 4 ans
Je pensais que tu aurais utilisé un token comme pour l'enregistrement (json, timestamp, signé, base64, hop). Tu y as pensé et y'a une contre-indication ?
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
Thomas Noël a écrit :
Je pensais que tu aurais utilisé un token comme pour l'enregistrement (json, timestamp, signé, base64, hop). Tu y as pensé et y'a une contre-indication ?
Impossible de gérer un usage unique avec un truc signé, ok la durée est courte mais je préfère comme ça (et puis je compte bien réutiliser token pour des trucs avec une expiration plus longue).
Mis à jour par Thomas Noël il y a environ 4 ans
Dans 0002 je trouve que tu te prends un peu la tête avec le interpret_expires (et ça complique un peu la compréhension du bidule). Décidons qu'on créé un token avec une ttl en nombre de secondes, sans mystère :
def create(cls, kind, content, duration=60): expires = timezone.now() + datetime.timedelta(seconds=duration) return cls.objects.create(kind=kind, content=content, expires=expires)
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
Thomas Noël a écrit :
Dans 0002 je trouve que tu te prends un peu la tête avec le interpret_expires (et ça complique un peu la compréhension du bidule). Décidons qu'on créé un token avec une ttl en nombre de secondes, sans mystère :
[...]
Ok, c'est juste que j'ai ce code ailleurs il me semble, je cherche si il y a un intérêt immédiat à factoriser et sinon je vire.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
Thomas Noël a écrit :
Dans 0002 je trouve que tu te prends un peu la tête avec le interpret_expires (et ça complique un peu la compréhension du bidule). Décidons qu'on créé un token avec une ttl en nombre de secondes, sans mystère :
[...]
Bon en fait non je trouve vachement utile de pouvoir a minima filer un temps en seconde ou un datetime explicite pour l'API; je veux bien virer le support du timedelta explicite mais ça fait juste gagner deux lignes.
Mis à jour par Thomas Noël il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Allez, je tente ma dernière cartouche qui fait gagner 40 lignes :)
def create(cls, kind, content, duration=60, expires=None): expires = expires or (timezone.now() + datetime.timedelta(seconds=duration)) return cls.objects.create(kind=kind, content=content, expires=expires)
Mis à jour par Thomas Noël il y a environ 4 ans
- Statut changé de Solution validée à Solution proposée
J'ai mis solution validée mais en fait non hein, je tente vraiment le coup.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Thomas Noël a écrit :
J'ai mis solution validée mais en fait non hein, je tente vraiment le coup.
Allez c'est bon, j'ai viré a2.utils.dt.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 4e35e3b5729c4ae9e22c2125c952bd3069d3e396 (tag: v2.26) Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Feb 11 14:45:24 2020 +0100 misc: use one-time tokens instead of cache (#39745) commit 3d55b1a0c5c454ee26bd3cc5ceaa4655d8437e4f Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Feb 11 12:05:49 2020 +0100 misc: add one-time token model (#39745)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Lié à Bug #9262: Déconnexion incomplète après prise en main sur autre compte ajouté
misc: clean dead imports (#39745)