Rails - Comment ajouter une Protection CSRF pour les formulaires créés en javascript?
Je suis en utilisant backbone.js et il fonctionne très bien. mais les formes, je suis la création de javascript modèle manque de rails de protection csrf token. Comment puis-je ajouter pour les modèles que je crée en javascript?
Vous devez vous connecter pour publier un commentaire.
Si vous avez
<%= csrf_meta_tag %>
dans votre mise en page quelque part et qui est accessible à partir de la js, alors vous pouvez y accéder à l'aide$('meta[name="csrf-token"]')
Voir http://eunikorn.blogspot.com/2011/07/working-with-backbonejs-in-harmony-with.html pour avoir une idée sur comment pirater au csrf de la prise en charge de chaque épine dorsale demande
$.ajax(data: {authenticity_token: $('meta[name="csrf-token"]').attr("content")})
Meilleure façon que j'ai résolu ce, à l'intérieur de la forme:
form_authenticity_token
privé dans le contrôleur?undefined local variable or method 'form_authenticity_token' for #<#<Class:0x007ff80b1d36d8>:0x007ff7eec39b58>
form_authenticity_token
est privé pour les contrôleurs tels que Franklin a dit. Ce que j'ai vu comme une suggestion a été de déclarer une variable dans un contrôleur@form_token = form_authenticity_token
et de l'utiliser dans la vue.Vous pouvez ajouter le jeton csrf pour chaque formulaire qui utilise la 'post' ou 'supprimer'. Ici, il est en coffeescript:
Assurez-vous que vous avez <%= csrf_meta_tags %> dans votre mise en page. Il devrait déjà être dans la norme de l '"application" de mise en page, mais de l'ajouter si vous utilisez une mise en page différente.
token
déclaré?<%= csrf_meta_tags %>
", est que cet Rails helper génère un jeton pour vous et l'insère dans le code HTMLhead
. Le jeton est lecontent
attribut dans la<meta>
la balise avec le nomcsrf-token
.Comme pour les Rails 4.2.2 vous n'êtes pas autorisé à utiliser
de votre
.js.erb
fichier d'actifs.Cependant, Vous pouvez créer le formulaire à l'intérieur de la
.js.erb
fichier et dans la vue contenant le formulaire.html.erb
l'utilisation du fichier de lahidden_field_tag
de l'aide pour générer le jeton de l'élément. Comme cet élément va être générés à l'extérieur de la forme que vous pouvez utiliser jquery pour ajouter cet élément à la forme.Cas d'étude: SweetAlert (première version, la version semble avoir résolu ce problème)
spectacle.js.erb
spectacle.html.erb