Angularjs angular.js http post到MVC异步任务<;行动结果>;web方法失败

Angularjs angular.js http post到MVC异步任务<;行动结果>;web方法失败,angularjs,model-view-controller,asynchronous,controller,Angularjs,Model View Controller,Asynchronous,Controller,我试图从angular客户端调用MVC控制器(示例登录)中的异步方法,但调用失败。我也用谷歌邮递员工具试过了 // // POST: /Account/Login [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) {

我试图从angular客户端调用MVC控制器(示例登录)中的异步方法,但调用失败。我也用谷歌邮递员工具试过了

    //
    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {
            case SignInStatus.Success:
                return RedirectToLocal(returnUrl);
            case SignInStatus.LockedOut:
                return View("Lockout");
            case SignInStatus.RequiresVerification:
                return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return View(model);
        }
    }

如果您正在使用[ValidateAntiForgeryToken]装饰器,则该操作需要在post数据中传递请求验证令牌

您可以删除[ValidateAntiForgeryToken],但这会使您的操作对被篡改的请求开放

另一个选项是向页面添加防伪令牌,然后在请求中传递其值

您的razor视图需要一个带有令牌的表单(注意:这只是一个虚拟表单,允许将令牌添加到页面中)

在javascript中,您可以传递其值

var logiuser=function(电子邮件、密码、返回URL){
var req={
方法:“post”,
url:“/Mysite/Login”,
标题:{
“内容类型”:未定义
},
数据:{
型号:{
电邮:电邮,,
密码:密码,
记住:错
},
__RequestVerificationToken:$(“#验证表单输入[名称=u RequestVerificationToken]”).val(),
returnUrl:returnUrl
}
};
返回$http(req)
.然后(功能(响应){
返回响应数据;
},功能(原因){
返回原因;
});

};操作用[ValidateAntiForgeryToken]修饰,是否传递带有数据的请求验证令牌?是[ValidateAntiForgeryToken]是问题所在。谢谢这就解决了问题。那么,有没有可能把它作为其他人的答案呢?
@using(Html.BeginForm("Login", "ControllerName", FormMethod.Post, new { id = "verification-form"}) {
    @Html.AntiForgeryToken()
}