InvalidAuthenticityToken à Concevoir::SessionsController#détruire (signe après avoir déjà signé)
Je suis en utilisant Concevoir 3.2.0
pour l'authentification et trouvé un problème, quand je fais les suivantes:
- onglet 1: signe dans app
- onglet 2: aller à n'importe quelle page de l'application
- onglet 2: signe hors (succès)
- onglet 1: signe hors (défaut - voir exception ci-dessous)
Exception soulevée:
ActionController::InvalidAuthenticityToken à Concevoir::SessionsController#détruire
Dans le développement de journal que je vois:
Ne peut pas vérifier jeton CSRF authenticité
Et les trois premières lignes de la trace de la pile sont:
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
actionpack (4.0.0) lib/action_controller/metal/request_forgery_protection.rb:163:in `handle_unverified_request'
actionpack (4.0.0) lib/action_controller/metal/request_forgery_protection.rb:170:in `handle_unverified_request'
devise (3.2.0) lib/devise/controllers/helpers.rb:198:in `handle_unverified_request'
Comment puis-je m'assurer successives signe outs ne pas soulever une exception?
Ses pas successifs signe, vous essayez de vous connecter, si vous êtes déjà un signe. alors pourquoi ne pas déconnecter l'utilisateur de tab1 , lorsque vous vous déconnectez de tab2
Je ne suis pas sûr de savoir pourquoi vous dites que c'est pas un autre signe. Successifs signifie la suite l'un de l'autre. Si je tente de le signer dans un onglet à compter de la signature dans un autre, c'est-à successifs pour autant que je suis concerné. Le but, cependant, est que c'est un très raisonnables, l'action que les utilisateurs peuvent prendre. Par exemple, un utilisateur ouvre plusieurs onglets sur un seul site, et lors de leur inscription dans un onglet, puis passez à l'successivement fermer les autres onglets, ils pourraient essayer de vous connecter à nouveau (en raison de la signature de l'apparence de tous les autres onglets).
je comprends maintenant. Oui, Concevoir devriez avoir traité de la déconnexion scénario sans jeter erreur méchante. Mais encore une fois, ils peuvent dire que c'est ce que nous appelons
Voir l'émission présentée par @freddyrangel github.com/plataformatec/devise/issues/2934 sur Concevoir dépôt Github. Vous pouvez vous joindre à la discussion en soutenant le problème.
Je ne suis pas sûr de savoir pourquoi vous dites que c'est pas un autre signe. Successifs signifie la suite l'un de l'autre. Si je tente de le signer dans un onglet à compter de la signature dans un autre, c'est-à successifs pour autant que je suis concerné. Le but, cependant, est que c'est un très raisonnables, l'action que les utilisateurs peuvent prendre. Par exemple, un utilisateur ouvre plusieurs onglets sur un seul site, et lors de leur inscription dans un onglet, puis passez à l'successivement fermer les autres onglets, ils pourraient essayer de vous connecter à nouveau (en raison de la signature de l'apparence de tous les autres onglets).
je comprends maintenant. Oui, Concevoir devriez avoir traité de la déconnexion scénario sans jeter erreur méchante. Mais encore une fois, ils peuvent dire que c'est ce que nous appelons
customization
. KirtiThorat la solution de contournement est probablement une meilleure solution jusqu'à Concevoir la met en œuvre.Voir l'émission présentée par @freddyrangel github.com/plataformatec/devise/issues/2934 sur Concevoir dépôt Github. Vous pouvez vous joindre à la discussion en soutenant le problème.
OriginalL'auteur user664833 | 2014-03-18
Vous devez vous connecter pour publier un commentaire.
Voici ce qui se passe,
Lorsque vous avez initialement signé de l'onglet 2, session et authenticity_token associé à l'utilisateur connecté a été détruit.
Lorsque vous essayez de vous déconnecter de l'onglet 1, de la conception de tente à nouveau de détruire la session à l'aide de la authenticity_token qui a été détruit sur l'onglet 2.
Par conséquent, vous obtenez le message d'erreur
ActionController::InvalidAuthenticityToken
que de l'élaboration d'ne parvient pas à s'authentifier à l'aide de la donnéeauthenticity_token
.Vous n'aurez qu'une seule session unique par signe, si cela est détruit, vous aurez rien à détruire à nouveau.
MODIFIER
Ce comportement n'est pas fourni par Concevoir. Si vous souhaitez mettre en place un tel comportement, vous aurez à remplacer SessionsController.
Créer un
sessions_controller.rb
fichier dansapp/controllers/users
répertoireMise à jour
routes.rb
Voir ma réponse mis à jour.
Je pense qu'il serait mieux si l'utilisateur reçoit un message flash par exemple, "Vous avez déjà signé s'il vous plaît vous connecter à nouveau" et ensuite rediriger vers la page de login au lieu de root_path.
Cela sonne comme une bonne idée. Ajouté au code.
Semble bon. Vous (ou @freddyrangel) devrait présenter une demande d'extraction pour cette solution de contournement à Concevoir.
OriginalL'auteur Kirti Thorat
Une solution simple à ce problème pourrait également être en permettant à signer les aboutissants via GET plutôt que de le SUPPRIMER. Dans imaginer.rb, vous pouvez simplement changer:
selon le dernier commit il ne semble pas comme quelque chose de changé pour l'initializer. Êtes-vous sûr que ce n'est pas une conséquence d'un autre problème? github.com/plataformatec/devise/blob/...
OriginalL'auteur Peleg
Vous pouvez modifier la stratégie de vérifier jeton csrf.
Dans rails 3, la stratégie par défaut lorsque le vérifier est omis, est de retour d'une session null. Dans les rails 4 a été changé à la stratégie en application_controller pour renvoyer une exception.
Je résoudre ce problème, le changement dans mon application_controller.rb
De cette façon, l'utilisation de la stratégie par défaut.
OriginalL'auteur Nícolas Lazarte Kaqui
Ce bug a été corrigé dans
devise 3.3.0
.already_signed_out
dansconfig/locales/en.yml
OriginalL'auteur user664833
De Kirti est tout à fait exact. J'ai eu ce problème hier, mais avec une coutume solution d'authentification. Si c'est vraiment un problème que vous voulez résoudre, vous pourriez trouver comment remplacer Concevoir de signout d'action et d'ajouter
skip_before_filter :verify_authenticity_token
pour cette action.Vous faites un bon point. Je pourrais effectivement présenter une demande d'extraction en fait.
Merci - merci de ne. I. e. si l'utilisateur est déjà signé, puis contourner le code habituel et faire croire que l'utilisateur est déconnecté.
si vous avez une solution, merci de ne soumettre une demande d'extraction. Ce défaut de comportement indésirable doit s'en aller
J'ai soumis une question sur github pour voir si elle a été adressée avant. J'ai le sentiment que le dispositif peeps sont vraiment gros sur la sécurité de sorte qu'ils pourraient ne pas être continuer à essayer quelque chose qui peut ou peut ne pas compromettre la sécurité.
OriginalL'auteur freddyrangel
Si vous rencontrez toujours ce problème comme je l'ai fait dans
Rails 5
etdevise 4.4.1
, dans app/controllers/application_controller.rb changementà
espère que cela aide.
OriginalL'auteur etoundi1er
passé, présent dans la mise en page:
<%= csrf_meta_tags %>
OriginalL'auteur vidur punj