Успешный вход с использованием Window Identity/OWIN не создает аутентифицированного пользователя в приложении MVC

Я могу пройти аутентификацию как через Facebook, так и через локальную базу данных, используя Windows Identity и OWIN. Я могу успешно вернуть ClaimsIdentity в обоих случаях. Без ошибок я могу войти в этот ClaimsIdentity с помощью AuthenticationManager.

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

private async Task SignInAsync(ApplicationUser user, bool isPersistent)
    {
        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
        var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
        AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
        Debug.WriteLine("identity.Name = " + identity.Name);
        Debug.WriteLine("identity.Claims.Count() = " + identity.Claims.Count().ToString());
        Debug.WriteLine("AuthenticationManager.User.Identity.IsAuthenticated  = " + AuthenticationManager.User.Identity.IsAuthenticated)
        Debug.WriteLine("this.User.Identity.IsAuthenticated = " + this.User.Identity.IsAuthenticated);
    }

Операторы отладки производят:

identity.Name = Cleo
identity.Claims.Count() = 3
AuthenticationManager.User.Identity.IsAuthenticated  = False
this.User.Identity.IsAuthenticated = False

Моя личность заполняется либо моей локальной базой данных, либо Facebook, и когда я пытаюсь войти с помощью AuthenticationManager, кажется, что это работает (или, по крайней мере, ошибка не выдается), но, похоже, у меня нет возможности выяснить, если пользователь в контексте моего приложения аутентифицирован или нет.


person Mister Epic    schedule 12.01.2014    source источник


Ответы (1)


Я использовал CookieSecure = CookieSecureOption.Always в Startup.Auth.cs, что привело к такому поведению. Я удалил его, и теперь аутентификация прошла успешно.

person Rapha    schedule 24.02.2014