[英]How do I add my csrf token to my $.destroy - in Rails 3 & Javascript
因此,這與另一個SO問題( 為什么在Actions in Rails 3中銷毀動作會觸發HTTP身份驗證? )有關,我認為這是該問題的核心,但不確定如何執行。
顯然我的$.destroy()
沒有傳遞必要的CSRF令牌。
但是我不確定如何將其包括在內。
這是我的JS:
var compv = {
exists: true,
tools: {
exists: true,
csrf_param: null,
csrf_token: function() { },
clientError: function() { }
},
comments: {
exists: true,
updateView: null,
selectImage: null,
upvote: null,
edit: null,
cancelEdit:null,
downvote: null,
showVotes: null,
destroy: {
success: null,
error: null,
dialog: 'comment-destroy-dialog'
},
getUploadID: function(element) {
return $(element).parents("li").attr("data-upload-id");
}
},
steps: {
exists: true,
selectFn: {},
selectedClass: "selected-step",
selectableClass: "selectable-step",
selectedClient: {
element: null,
id: null,
stepType: "client",
ajaxSuccess: null
},
selectedProject: {
element: null,
id: null,
stepType: "project",
ajaxSuccess: null
},
selectedStage: {
element: null,
id: null,
stepType: "stage",
ajaxSuccess: null,
getID: function() {
return compv.steps.selectedStage.id;
},
displayCompare: function() {
window.open($(this).attr('data-url'), "_blank");
}
},
selectedUpload: {
element: null,
id: null,
stepType: "image",
primeUploadDisplay: null,
ajaxSuccess: null,
uploader: null,
noCloseDialog: false
}
}
};
compv.tools.csrf_param = function(){
return $('meta[name=csrf-param]').attr('content');
};
compv.tools.csrf_token = function(){
return $('meta[name=csrf-token]').attr('content');
};
這是我的$.destroy()
$.destroy({
url: element.attr('data-destroy-url'),
success: mapping.success
});
鑒於我在上述函數中獲取了適當的csrf元數據,那么如何將其傳遞給.destroy()?
我嘗試添加compv.tools.csrf_token
,但出現的錯誤是compv
。 當我執行compv.tools.csrf_token()
時,發生了同樣的事情。
有什么想法嗎?
看一下handleMethod
的public/javascripts/rails.js
(或此處的jQuery版本 )中的handleMethod
-兩者都將向您展示Rails如何包括令牌。
如果您想使用自己的自定義destroy
調用,則需要自己進行此操作。
將csrf函數的結果放入一個對象中,然后將該對象傳遞到data屬性中。 至少在過去,這對我有用。
var data = {};
data[compv.tools.csrf_param()] = compv.tools.csrf_token();
$.destroy({
url: element.attr('data-destroy-url'),
success: mapping.success,
data: data
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.