Проблема FormsAuthentication.SetAuthCookie - PullRequest
2 голосов
/ 18 апреля 2011

В моем приложении MVC 3 у меня очень простой контроллер

[HttpPost]
public ActionResult SignIn(LogonModel logonModel)
{
    string logonMessage;
    if(_authenticationService.Login(logonModel.UserName, logonModel.Password, 
        out logonMessage))
    {
        FormsAuthentication.SetAuthCookie(logonModel.UserName,true);

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

    return View();
}

Я вижу, как в браузере устанавливаются файлы cookie, однако когда я закрываю браузер и возвращаюсь на сайт, он не регистрирует меняв автоматически.Это похоже на то, что куки не обрабатываются, как и должно быть.

Ответы [ 3 ]

4 голосов
/ 18 апреля 2011

Первый и самый очевидный вопрос: включены ли в вашем браузере файлы cookie ?

Что вы также можете проверить, так это то, что в вашем web.config вы настроили для секции <authentication> тайм-аут:

<authentication mode="Forms">
    <forms loginUrl="~/login" timeout="60" />
</authentication>

если вы не укажете тайм-аут, он будет использовать значение по умолчанию 30 минут, но, может быть, вы установите другое (недействительное) значение?

timeout атрибут:

Указывает время в целочисленных минутах, после которого истекает срок действия cookie.

Вы также можете проверить CookiesSupported свойство (boolean), чтобы увидеть, что это возвращает.

3 голосов
/ 24 февраля 2016

Обязательно удалите следующий тег <modules> из web.config при использовании MVC 5 +

<system.webServer>
<modules>
  <remove name="FormsAuthentication" />
</modules>
</system.webServer>
0 голосов
/ 15 марта 2016

У меня была ситуация, когда домен был неверен в разделе аутентификации:

  <authentication mode="Forms">
      <forms name="yourAuthCookie" loginUrl="/user/login" protection="All" path="/" enableCrossAppRedirects="true"  timeout="90" domain="WRONGDOMAIN.COM" />
    </authentication>

Удаление домена сделало свое дело:

  <authentication mode="Forms">
      <forms name="yourAuthCookie" loginUrl="/user/login" protection="All" path="/" enableCrossAppRedirects="true"  timeout="90"  />
    </authentication>
...