Я могу пройти аутентификацию как через 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
, кажется, что это работает (или, по крайней мере, ошибка не выдается), но, похоже, у меня нет возможности выяснить, если пользователь в контексте моего приложения аутентифицирован или нет.