Книга: ASP.NET MVC Framework

Пример 2. Логин через Ajax

Второй пример будет представлять собой реализацию авторизации пользователя без перезагрузки страницы, с использованием только Ajax-запросов. Кроме того, сделаем так, чтобы возможность произвести вход в систему была доступна с любой страницы проекта.

Первоначально переопределим действие LogOn в контроллере Account так, чтобы поддержать возможность произведения входа в систему черезе Ajax-запросы (листинг 7.2).

Листинг 7.2. Переопределение действия LogOn

public ActionResult LogOn(string userName,
          string password,
          bool rememberMe,
          string returnUrl)
{
  if (Request.IsAjaxRequest())
  {
    var result = new AjaxResult();
    if (!ValidateLogOn(userName, password))
    {
      result.IsSuccess = false;
      result.ErrorString = "введен неверный логин или пароль";
      return Json(result);
    }
    FormsAuth.SignIn(userName, rememberMe);
    result.IsSuccess = true; return Json(result);
  }
  else
  {
    if (!ValidateLogOn(userName, password))
    {
      return View();
    }
    FormsAuth.SignIn(userName, rememberMe);
    if (!String.IsNullOrEmpty(returnUrl))
    {
      return Redirect(returnUrl);
    }
    else
    {
      return RedirectToAction("Index", "Home");
    }
  }
}

Обратите внимание на выделенный в листинге 7.2 фрагмент. В нем используется метод Request.IsAjaxRequest() для определения типа запроса. Если запрос был произведен с помощью Ajax, то выполнятся дальнейшая обработка и возврат результата в виде JSON-данных с булевым значением, описывающим, произведен ли вход в систему, и строкой описания ошибки, если она возникла. Когда запрос не является Ajax-запросом, выполняется предыдущая логика.

Оглавление книги


Генерация: 2.586. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз