ビューの1つにグリッドがあり、その中にアクション列が作成されています。その列には、編集と削除のためのボタンがあります。ユーザーが削除ボタンをクリックすると、jQueryを使用してそのクリックイベントにアクセスします。削除ボタンがフォームの一部ではないのでASP.NET MVCでAntiForgeryTokenのないアクションメソッドを削除するのは危険ですか?
// POST: Roles/Delete/5
[Route("roles/delete")]
[HttpPost]
public async Task<IActionResult> RoleDelete(string id)
{
IdentityRole role = await _roleManager.FindByIdAsync(id);
await _roleManager.DeleteAsync(role);
return RedirectToAction("RoleIndex");
}
:ここ
$(document).on('click', '.btnDeleteRole', function (e) {
e.preventDefault();
if (confirm("Are you sure you want to delete this record?")) {
var $this = $(this); //store $(this) to a variable
var roleId = $this.attr('data-role-Id');
$.ajax({
type: "POST",
url: "/admin/roles/delete",
data: { id: roleId },
dataType: "html",
success: function (data) {
// rebind kendo grid
}
});
}
});
私の削除アクションメソッドは次のようになります。ここでは
は私のAjaxのようなルックスを削除するとは何かActionMethodの上にAntiForgeryToken注釈を付けることはできません。
このようなアイテムを削除するのは安全ですか?
トークンをJS経由で渡す必要があります。 – SLaks
本当にグリッド内の行ごとにトークンが必要ですか?フォームに各アイテムをラップする必要はありませんか? –
JSが取得できる限り、単一のトークンを使用できます。 – SLaks