как я могу использовать AntiForgeryToken с сообщением JSON в mvc 4

У меня есть код jQuery, который отправляет данные с помощью JSON.stringify в класс контроллера, но когда я использовал AntiForgeryToken, он не работает... это лучший способ защитить сообщение JSON, или я что-то упускаю....

во-вторых, мне нужно дополнительное к этому... то есть шифрование для защиты данных JSON...

большое спасибо за помощь в продвинутом...

<script type="text/javascript">

$(document).ready(function () {
    $('#id_login_submit').click(function () {

        var _authetication_Data = { _UserName: $('#u1').val(),  _Password: $('#p1').val() }

        $.ajax({
            type: "POST",
            url: "/Account/ProcessLoginRequest",
            data: JSON.stringify({ model: _authetication_Data }),
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (response) {
                alert(response);
            }


        });

    });
});

 </script>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    @Html.LabelFor(m => m._UserName)
    @Html.TextBoxFor(m => m._UserName, new { id = "u1"})


    @Html.LabelFor(m => m._Password)
    @Html.PasswordFor(m => m._Password, new { id = "p1"})


    <input type="button" id="id_login_submit" value="Login" />
}

   [HttpPost]
    [ValidateAntiForgeryToken]
    public JsonResult ProcessLoginRequest(LoginModel model)
    {
        string returnString = null;

      if (ModelState.IsValid && WebSecurity.Login(model._UserName, model._Password, persistCookie: true))
        {
            returnString = "user is authenticated";
        }

        else
        { returnString = "Message from loginProcess"; }

        return Json(returnString, JsonRequestBehavior.AllowGet);
    }

person Toxic    schedule 14.12.2012    source источник


Ответы (2)


Проблема в том, что вы не включаете VerificationToken в свой запрос:

var _authetication_Data = { _UserName: $('#u1').val(),  _Password: $('#p1').val(), __RequestVerificationToken: $('[name=__RequestVerificationToken]').val(); }
person Cloud SME    schedule 14.12.2012
comment
Спасибо, Queti, я получаю ответ Json, но действительно ли он аутентифицирует токен, потому что, когда я изменяю код токена на стороне клиента и все еще работаю, чего, как я предполагаю, не должно быть?? есть ли способ подтвердить аутентификацию с правильным токеном??? спасибо вам - person Toxic; 16.12.2012
comment
var token = $('input[name=__RequestVerificationToken]').val()+999999; - person Toxic; 16.12.2012

вот как я использую код

<script type="text/javascript">

$(document).ready(function (options) {
    $('#id_login_submit').click(function () {

        var token = $('input[name=__RequestVerificationToken]').val();

      //var token = $('input[name=__RequestVerificationToken]').val()+"999999";
     //   alert("token :: "+token);

        var _authetication_Data = { _UserName: $('#u1').val(), _Password: $('#p1').val(), "__RequestVerificationToken": token }


            $.ajax({
                type: "POST",
                url: "/Account/ProcessLoginRequest",
                data: JSON.stringify({ model: _authetication_Data }),
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (response) {
                    alert(response);
                }
            });

    });
});

person Toxic    schedule 16.12.2012