将RequestVerificationToken从Angular js传递给mvc控制器

时间:2014-12-05 06:45:59

标签: asp.net-mvc angularjs angularjs-scope antiforgerytoken csrf-protection

我想将主页中的RequestVerificationToken传递给使用ValidateAntiforgeryToken属性修饰的控制器操作。

我的基本观点如下:

@{
    Layout = null;
}
@Html.AntiForgeryToken()

以html格式呈现的令牌为:

<input name="__RequestVerificationToken" type="hidden" value="9DLRgZ1UYKCRdDxhIx0qJ9fovUJafQ8tvfkd21M6hJHQBRnbvNLu5BlYwZXwGUUXmkGfmB5cFMsgaH0rbd7OorW9WVC3XvQYGdbki3KoxMaYxfEf7FLELnm3IDF95bjET83Dls1ZnLNAoLxFO_2SbPkwg7lJjKF6F4vPWredPYM1" class="ng-scope">

我正在尝试在httpExecute函数中传递令牌,如下所示:

this.httpExecute = function (opt) {
$http.defaults.headers.common['_RequestVerificationToken'] = $(':input:hidden[name*="RequestVerificationToken"]').val();        
    return $http({
        method: opt.method,
        url: opt.url,
        params: opt.params,
        data: opt.data
    })
     .error(function (response) {
         if (response.IsTokenExpired == true) {
             $user.logoutsession();
         }
     });
}

但是我将令牌值设为null / undefined。 我在这做错了什么?  请帮忙。 感谢

1 个答案:

答案 0 :(得分:3)

是的,如果我按照以下方式通过它,我会正确地理解它:

return $http({
        method: opt.method,
        url: opt.url,
        params: opt.params,
        data: opt.data,
        headers: {
            '__RequestVerificationToken': $(':input:hidden[name*="RequestVerificationToken"]').val()
        }
    })