Projet

Général

Profil

Development #39745

Ne pas dépendre du cache pour la fonctionnalité "se reconnecter avec cet utilisateur"

Ajouté par Frédéric Péters il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
11 février 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à Publik - Bug #9262: Déconnexion incomplète après prise en main sur autre compteFermé08 décembre 2015

Actions

Révisions associées

Révision 208dd075 (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

misc: clean dead imports (#39745)

Révision 3d55b1a0 (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

misc: add one-time token model (#39745)

Révision 4e35e3b5 (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

misc: use one-time tokens instead of cache (#39745)

Historique

#2

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Assigné à mis à Benjamin Dauvergne
#4

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 ?

#5

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).

#6

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)
#7

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.

#8

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.

#9

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)
#10

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.

#11

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.

#12

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)

#13

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
#14

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é

Formats disponibles : Atom PDF