У меня есть приложение Web API с работающей аутентификацией и т. Д. Теперь я хочу иметь возможность (N) ввести некоторые данные о текущем вошедшем в систему пользователе.Итак, я настроил ninject так, чтобы он выглядел примерно так:
kernel.Bind<UserContext>().ToMethod(ctx =>
{
var identity = HttpContext.Current?.Request?.LogonUserIdentity
if (identity != null)
{
return new UserContext
{
UserId = identity.GetUserId(),
};
}
return new UserContext();
}).InRequestScope()
Но когда этот метод вызывается, LogonUserIdentity
выглядит совсем не как личность, созданная через OAuthAuthorizationServerProvider.GrantResourceOwnerCredentials
, а как личность локальной учетной записи Windows.Нет идентификатора или адреса электронной почты (имя - это имя моей локальной учетной записи).HttpContext.Current.User
с другой стороны «пусто» (без имени, без идентификатора).
Как я могу получить текущего пользователя OAuth?
Решено
Здесь найдено решение: Пользователь (IPrincipal) недоступен в конструкторе ApiController с использованием Web Api 2.1 и Owin