Да, это возможно. Просто отправьте форму входа в систему с помощью метода описанный здесь микрофоном bosch и возвратите json datastructure с returnUrl если таковые имеются.
я создал легкий класс LoginResultDTO, который я возвращаю как json:
public class LoginResultDTO
{
public bool Success {get;set;}
public string Message {get;set;}
public string ReturnUrl {get;set;}
}
Вот блок сценария от моего представления LogOn:
Этот будет ajax переносить форму входа в систему. Обратите внимание, что это - самая простая реализация возможного кода JavaScript, но это - место для запуска.
Затем я изменил свое действие LogOn в AccountController, и в соответствующих местах помещает что-то вроде этого:
if(Request.IsAjaxRequest())
{
return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"});
}else
{
return View();
}
, Таким образом, это - сверхлегкая, а скорее полная версия того, как аутентификация jQuery могла быть сделана в asp.net mvc.
. Если у вас есть несколько приложений, работающих в одном домене на одном сервере, вы можете захотеть иметь отдельные имена файлов cookie сеанса для каждого из них, так что они не разделяют одно и то же состояние сеанса или, что еще хуже, перезаписывают друг друга.
См. также примечания для Forms Auth cookie name :
Определяет HTTP cookie для использования для аутентификации. Если на одном сервере работает несколько приложений и каждому приложению требуется уникальный файл cookie, необходимо настроить имя файла cookie в каждом файле Web.config для каждого приложения.
1) Это может (немного) замедлить кого-то, кто (случайно) его ищет.
2) Вы можете скрыть тот факт, что вы используете ASP.NET
Я думаю, что это в основном дело вкуса. Некоторые люди / компании хотят контролировать каждый аспект своих веб-приложений и могут просто использовать другое имя для согласования с другими именами файлов cookie. Например, если вы используете очень короткие односимвольные имена параметров во всем приложении, вам могут не понравиться имена файлов cookie сеанса, такие как ASPSESSID.