Я разрабатываю веб-приложение ASP.NET MVC. Я использую AngularJS. Но у меня проблема с отправкой почтовой формы на сервер из-за проверки CSRF. Прежде всего, я новичок в AngularJS.
В AngularJS я отправляю такую форму при нажатии кнопки
angular.module('loginApp', ['ui.bootstrap', 'blockUI']).controller('loginController', function ($scope) {
$scope.loginFormData = { }
$scope.submitLoginForm = function()
{
$http.post("url", $scope.loginFormData, function (response) {
})
}
});
На стороне сервера я выполняю проверку CSRF для формирования сообщения.
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<JsonResult> Login(LoginViewModel model)
{
//Do other stuff
}
Вот моя форма HTML:
@Html.AntiForgeryToken()
<div class="lock-container">
<div class="panel panel-default text-center paper-shadow" data-z="0.5">
<div class="panel-body">
<div class="form-group">
<div class="form-control-material">
<input class="form-control" ng-model="username" type="text" placeholder="Username">
@Html.LabelFor(x => x.UserName)
</div>
</div>
<div class="form-group">
<div class="form-control-material">
<input class="form-control" ng-model="password" type="password" placeholder="Enter Password">
@Html.LabelFor(x=>x.Password)
</div>
</div>
<button ng-click="submitLoginForm()" class="btn btn-primary">Login <i class="fa fa-fw fa-unlock-alt"></i></button>
</div>
</div>
</div>
На самом деле это не форма. Я просто отправляю данные с помощью Ajax. Вы заметили @Html.AntiForgeryToken() вверху. Когда я проверяю в браузере, я вижу это.
Что я хочу сделать, так это получить значение этого токена и отправить сообщение $http, как показано ниже.
$http.post("url",{ "_RequestVerificationToken": $scope.csrfToken }, function (response) {
})
Если я отправлю, как указано выше, проверка csrf будет успешной на сервере. Как я могу добиться этого с помощью AngularJS?