51 votes

Rails 4 + Devise: Password Reset donne toujours une erreur "Token is invalid" sur le serveur de production, mais fonctionne très bien localement.

J'ai un Rails 4 application configuré pour l'utilisation de Concevoir, et je suis à court d'un problème avec les réinitialisations de mot de passe. J'ai le mailer mis en place, et la réinitialisation de mot de passe e-mail envoie bien. Le lien fourni est correct reset_password_token attribuée, qui j'ai vérifié avec la base de données. Cependant, quand j'ai envoyer le formulaire avec formaté correctement les mots de passe, il donne un message d'erreur indiquant que le token n'est pas valide.

Cependant, exactement le même code fonctionne très bien en local par le biais rails s. Le mail envoie, et je peux réinitialiser le mot de passe. Le code que j'utilise est la norme de Concevoir le code, je n'ai pas remplacé tout ça.

C'est peut-être quelque chose avec Apache? Je ne suis pas trop familier avec elle. Quelqu'un aurait-il des idées?

130voto

doctororange Points 3096

Vérifier le code en app/views/devise/mailer/reset_password_instructions.html.erb

Le lien doit être généré avec:

edit_password_url(@resource, :reset_password_token => @token)

Si votre point de vue encore usage de ce code, qui sera la cause du problème:

edit_password_url(@resource, :reset_password_token => @resource.password_reset_token)

Concevoir a commencé à stocker des hachages de la marque, l'e-mail doit créer le lien avec le réel jeton (@token) plutôt que la valeur de hachage stockées dans la base de données.

Ce changement s'est produit dans la conception et la 143794d701

11voto

MaximusDominus Points 407

En plus du correctif de doctororange, si vous écrasez resource.find_first_by_auth_conditions , vous devez tenir compte du cas où warden_conditions contient un reset_password_token au lieu d'un e-mail ou d'un nom d'utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X