Я позволяю своим пользователям входить в систему, используя разные социальные логины, такие как github и facebook.
Моя проблема в том, что, когда они создали различные типы объектов в системе, мне нужно назначить им разрешения для новых объектов.
Я использовал претензии для этого, делая что-то вроде этого:
- Создание новой личности / принципала с обновленными утверждениями
- Выйти из текущей схемы аутентификации
- Войти с помощью CookieAuthentication
Код:
var currentScheme = User.Claims.First(x => x.Type == ClaimTypes.AuthenticationMethod);
var principal = await _principalService.CreateAppPrincipal(User.GetUserId());
await HttpContext.SignOutAsync(currentScheme.Value);
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);
Это работало нормально, пока я не обновил ядро asp.net 2.1.
Теперь я получаю следующую ошибку:
Обработчиком аутентификации, зарегистрированным для схемы «Facebook», является «FacebookHandler», который нельзя использовать для SignOutAsync. Зарегистрированными схемами выхода являются: Identity.Application, Identity.External, Identity.TwoFactorRememberMe, Identity.TwoFactorUserId, Cookies. '
Текущие заявки (до обновления):
Почему это? Почему я не могу выйти из системы, если они использовали социальную учетную запись?