Как проверить модальную форму входа в систему, используя ненавязчивый AJAX? - PullRequest
0 голосов
/ 18 февраля 2019

Я создаю веб-сайт, который содержит модальную форму авторизации.В случае сбоя входа в систему, я хочу показать сообщения проверки, как обычно, в форме ASP.NET Core.

Как я могу сделать это, используя ненавязчивый AJAX?Прямо сейчас я могу вызывать свои конкретные функции для успеха и неудачи, но я не знаю, что поместить внутрь, чтобы проверка работала.

Это мой текущий код:

Модальный логин:

<div class="modal" id="modalLogin" tabindex="-1" role="dialog" aria-labelledby="modalLoginLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <form id="account" asp-controller="Account" asp-action="LoginModal" method="post" data-ajax="true" data-ajax-method="post" data-ajax-failure="onLoginFail">
                <div class="modal-header">
                    <h5 class="modal-title" id="modalLoginLabel">@ViewData["Title"]</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <section>
                        <div asp-validation-summary="All" class="text-danger"></div>
                        <div class="form-group">
                            <label asp-for="Username"></label>
                            <input asp-for="Username" class="form-control" />
                            <span asp-validation-for="Username" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <label asp-for="Password"></label>
                            <input asp-for="Password" class="form-control" />
                            <span asp-validation-for="Password" class="text-danger"></span>
                        </div>
                        <div class="form-group">
                            <div class="checkbox">
                                <label asp-for="RememberMe">
                                    <input asp-for="RememberMe" />
                                    @Html.DisplayNameFor(m => m.RememberMe)
                                </label>
                            </div>
                        </div>
                        <div class="form-group">
                            <p class="text-center">
                                <a asp-controller="Account" asp-action="ForgotPassword">
                                    @Localizer["ForgotPasswordLink"]
                                </a>
                            </p>
                        </div>
                    </section>
                </div>
                <div class="modal-footer">
                    <button type="submit" class="btn btn-primary">@Localizer["LoginButton"]</button>
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">@Localizer["CloseButton"]</button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
    var onLoginFail = function (result) {
        //I DON'T KNOW WHAT TO PUT IN HERE
    };
</script>

Мои действия на контроллере:

    [HttpPost]
    [AllowAnonymous]
    public async Task<IActionResult> LoginModal(LoginViewModel model, string returnUrl = null)
    {
        if (ModelState.IsValid)
        {
            var user = await _userManager.FindByNameAsync(model.Username);
            if (user != null && !await _userManager.IsEmailConfirmedAsync(user))
            {
                ModelState.AddModelError("Login", "User not confirmed");
                return BadRequest(ModelState);
            }                    

            var result = await _signInManager.PasswordSignInAsync(model.Username,
                model.Password, model.RememberMe, lockoutOnFailure: true);
            if (result.Succeeded)
            {
                if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
                    return Ok(returnUrl);

                return RedirectToAction("Index", "Home");
            }

            ModelState.AddModelError("Login", "Incorrect credentials");
            return BadRequest(model);
        }
        return BadRequest();
    }

Заранее спасибо!

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