В соответствии с темой я пытаюсь изменить существующее веб-приложение asp.net mvc для использования проверки подлинности с помощью форм вместо окон. Пока что я сделал следующее:
- Модифицированный режим аутентификации в web.config
- Добавлен тег авторизации для всех контроллеров (кроме учетной записи)
- Создан новый контроллер для представления входа, представления, модели и т. Д.
web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
Сообщение входа:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(Login model, string ReturnUrl = "")
{
// code to check user omitted
if(user != null)
{
FormsAuthentication.SetAuthCookie(model.Username, false);
if (Url.IsLocalUrl(ReturnUrl))
{
return Redirect(ReturnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
ModelState.AddModelError("", "Username and/or Password is incorrect.");
ModelState.Remove("Password");
return View();
}
При отладке экран входа в систему создается по умолчанию, а не Home / Index. Если я протестирую разные имена пользователей / пароли, все работает правильно, поэтому здесь нет проблем с контроллером / методами.
Однако в Home / Index я поставил для тестирования следующее:
@if(Request.IsAuthenticated)
{
<p>Logged in @ViewBag.ClientName</p>
}
else
{
<p>Logged off</p>
}
ViewBag.ClientName просто устанавливается из User.Identity.Name. Когда я обычно вхожу в систему, ClientName показывает имя моего компьютера / локального пользователя, а не пользователя форм, с которым я вошел в систему. Я также могу перейти непосредственно к Index / Home и игнорировать логин, чтобы получить тот же результат.
Очевидно, что проверка подлинности Windows все еще применяется здесь, и я попытался закрыть IIS Express, изменить URL-адрес, который он отлаживает, и т. Д. В случае, если какая-то форма настройки IIS или что-то подобное все еще устанавливается на моем локальном компьютере, но я не могу остановить это.
Любые идеи?