1

我在这里通读了关于让 AntiForgeryToken 与 Jquery ajax reuests 一起工作的内容,我基本上必须确保使用类似的东西在我的 post/ajax 调用中包含令牌

data: { 
        "__RequestVerificationToken":
        $("input[name=__RequestVerificationToken]").val() 
    },

但是...我正在使用 ViewModels 并创建我的视图模型对象,分配我的值,然后对其进行 JSON.stringify 处理并将其作为数据传递(如下所示)

        // Ajax call here
    // Make a view model instance
    var ajaxEditPermissionViewModel = new Object();
    ajaxEditPermissionViewModel.HasPermission = isChecked;
    ajaxEditPermissionViewModel.Permission = permission;
    ajaxEditPermissionViewModel.Category = category;
    ajaxEditPermissionViewModel.MembershipRole = role;

    // Ajax call to post the view model to the controller
    var strung = JSON.stringify(ajaxEditPermissionViewModel);

    $.ajax({
        url: '/Admin/Permissions/UpdatePermission',
        type: 'POST',
        dataType: 'json',
        data: strung,
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            ResetTableAfterAjaxCall();
            ShowSuccessNotification();
        },
        error: function (xhr, ajaxOptions, thrownError) {
            ShowUserMessage("Error: " + xhr.status + " " + thrownError);
            ResetTableAfterAjaxCall();
        }
    });

我有点困惑如何使用当前设置传递令牌?非常感谢任何建议。

4

1 回答 1

0

您觉得需要将结果字符串化是否有特定的原因?我们只是这样做..

    $.ajax({
        type: "POST",
        data: {
            permission: Permission, 
            // other fields
        }...

有关如何使用这种传递参数的方式传递令牌的信息,请参阅本文:

http://weblogs.asp.net/dixin/archive/2010/05/22/anti-forgery-request-recipes-for-asp-net-mvc-and-ajax.aspx

于 2012-05-02T13:44:00.603 回答