1

AntiForgeryTokenをJqueryajaxreuestsで動作させる方法についてここで読みました。基本的に、次のようなものを使用して、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 に答える