【发布时间】:2016-04-17 20:58:20
【问题描述】:
我的一个视图中有一个网格,并在其中创建了一个操作列。该列中有用于编辑和删除的按钮。当用户单击删除按钮时,我使用 jQuery 访问其单击事件。
这是我的 ajax 删除的样子:
$(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
}
});
}
});
这是我的删除操作方法的样子:
// 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");
}
由于删除按钮不是表单的一部分,因此我的 ActionMethod 上方不能有 AntiForgeryToken 注释。
删除这样的项目安全吗?
【问题讨论】:
-
需要通过JS传递token。
-
我的网格中的每一行真的需要一个标记吗?那么我不需要将每个项目包装在一个表格中吗?
-
可以使用单个token,只要JS能拿到就行。
标签: c# jquery asp.net asp.net-mvc asp.net-core-mvc