MVC3 отправляет хешированный пароль с помощью ajax - PullRequest
0 голосов
/ 12 марта 2011

Я создаю форму входа, подобную этой:

@using (Ajax.BeginForm("Login", new AjaxOptions()
{
    HttpMethod = "POST",
    OnComplete = "onComplete"
}))
{
    @Html.ValidationSummary(true)
    <fieldset>
        <div class="editor-label">
            @Html.LabelFor(model => model.Username, "Username")
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Username)
            @Html.ValidationMessageFor(model => model.Username)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.Password, "Wachtwoord")
        </div>
        <div class="editor-field">
            @Html.PasswordFor(model => model.Password)
            @Html.ValidationMessageFor(model => model.Password)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.Remember, "Remember me")
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Remember)
            @Html.ValidationMessageFor(model => model.Remember)
        </div>
        <p>
            <input type="submit" value="Inloggen" />
        </p>
    </fieldset>
}

Теперь пароль отправляется через Интернет для проверки на модель, что небезопасно. Я хочу удостовериться, что пароль всегда хэшируется, пересекая линию и не давая человеку посередине понюхать.

OnBegin не будет работать, потому что элементы не могут быть изменены после этого, какие-либо другие идеи?

1 Ответ

0 голосов
/ 03 января 2012

Вы можете сделать это без ajax, перехватывая событие submit и хешируя пароль перед отправкой формы

 @using (Html.BeginForm("LogOn","Login",FormMethod.Post,new {id = "loginForm"})) {
    <div>
        <fieldset>
            <legend>Account information</legend>

            <div class="editor-label">
                @Html.LabelFor(m => m.UserName)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(m => m.UserName)
                @Html.ValidationMessageFor(m => m.UserName)
            </div>

            <div class="editor-label">
                @Html.LabelFor(m => m.Password)
            </div>
            <div class="editor-field">
                @Html.PasswordFor(m => m.Password, new {id = "password"})
                @Html.ValidationMessageFor(m => m.Password)
            </div>

            <div class="editor-label">
                @Html.CheckBoxFor(m => m.RememberMe)
                @Html.LabelFor(m => m.RememberMe)
            </div>

            <p>
                <input type="submit" value="Connect"  id="submit"/>
            </p>
        </fieldset>
    </div>}

Например, с этим кодом JavaScript:

      $(function () {
          $("#loginForm").on("submit",function (e) {

              var form = $(this);
              var pass = $("#password").val();
              $("#password").val(MD5(token + MD5(pass)));

              form.submit();
          });

      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...