(Request.IsAuthenticated) имеет значение false после использования FormsAuthentication.SetAuthCookie(username,false)

Я создаю веб-сайт с VS2013 RC и MVC 5 и пытаюсь использовать formAuthentification без регистрации постоянных пользователей на моем сайте.

Я публикую API своей компании для аутентификации имен и паролей пользователей. Когда это вернется успешно, я хочу выпустить файл cookie авторизации с помощью:

System.Web.Security.FormsAuthentication.SetAuthCookie(username, false);

Я вижу файл cookie .ASPXAUTH=... после того, как это вызвано.

Но я не могу попасть в блок @if(User.Identity.IsAuthenticated) или, альтернативно, @if(Request.IsAuthenticated) на странице шаблона _LoginPartial.cshtml.

Этот метод работал для меня в MVC 4, и я пытаюсь согнуть его, чтобы он соответствовал аутентификации OWIN MVC 5.


person chris    schedule 09.10.2013    source источник
comment
Ответ в порядке, но я думаю, что эта проблема не связана с MVC 5, так как у меня была такая же проблема в MVC 4.   -  person Vitor M. Barbosa    schedule 12.02.2014


Ответы (4)


Мне нужно было включить проверку подлинности с помощью форм в файле web.config.

<system.web>
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
...
</system.web>
person chris    schedule 14.10.2013
comment
У меня такая же проблема! добавьте свой ответ в web.config отлично работает! request.IsAuthenticated возвращает true - person TaiwanHotDog; 01.07.2020

Если вы не хотите бороться с новым режимом аутентификации MVC5 (OWIN), вы можете найти ответ по этой ссылке.

http://www.khalidabuhakmeh.com/asp-net-mvc-5-authentication-breakdown-part-deux#disqus_thread

person Reza    schedule 02.04.2014

Я пробовал все вышеперечисленные решения, но то, что решает мою проблему, это прокомментировать это в web.config.

<modules>
<remove name="FormsAuthentication"/>
</modules>
person Musab    schedule 02.08.2017

Тем, у кого все еще есть эта проблема и кто пробовал все вышеперечисленные подходы, я рекомендую попробовать добавить в файл Web.Config в разделе формы аутентификации cookieless="UseCookies". В моем случае это сработало нормально.

<system.web>
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" cookieless="UseCookies" timeout="2880" />
</authentication>
...
</system.web>
person M. A. Cordeiro    schedule 06.04.2016