欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ASP.NET 使用Ajax请求带有验证[ValidateAntiForgeryToken]的Controller方法

程序员文章站 2022-06-02 11:41:57
...

AJAX Posting ValidateAntiForgeryToken without Form to MVC Action Method

Controller中的代码

        [HttpPost]
        [ValidateAntiForgeryToken]// 对Ajax请求的方法添加验证
        [UserAuthorizeAttribute]
        public ActionResult SetDefault(int? id)
        {
        
        }

JS中的代码:


            var datalist = { id: SysEmailKey };
            if (isConfirm) {
                addAntiForgeryToken(datalist);//调用方法进行设置验证参数 __RequestVerificationToken
                $.ajax({
                    type: "post",
                    data: datalist, //这里不加 "{ }"
                    url: "@Url.Action("SetDefault", "EmailAccount")",
                    dataType: "json",
                    xhrFields: { withCredentials: true },
                    success: function (data) {
                       
                    },
                    error: function (ex) {
                        console.log(ex);
                    }
                });
            }


    function addAntiForgeryToken(data) {
        if (!data) {
            data = {};
        }
        var tokenInput = $('input[name=__RequestVerificationToken]');
        if (tokenInput.length) {
            data.__RequestVerificationToken = tokenInput.val();
        }
        return data;
    };

最后在html中也要加上相关的代码:

    @using (Html.BeginForm("Index", "EmailAccount", FormMethod.Get))
    {
        @Html.AntiForgeryToken()



    }

相关标签: ASP.NET学习