0

У меня есть базовая служба веб-API с контроллером, который наследуется от ApiController. Я прочитал, что я должен использовать ApiController.User, чтобы получить текущий пользовательский объект пользователей IPrincipal. Однако, когда я пытаюсь выполнить следующее в моем конструкторе, Пользователь пуст, не имея сведений о Принципале.Нет информации о пользователе IPrincipal в контроллере

[InjectionConstructor] 
     public CloudConfigValueController(IDataModelConverter dataModelConverter, IBusinessModelConverter businessModelConverter, ILogger logger) 
     { 
      var u = User; 
      _businessModelConverter = businessModelConverter; 
      _dataModelConverter = dataModelConverter; 
      _logger = logger; 
     } 

мой web.config

<system.web> 
    <authentication mode="Windows" /> 
    <identity impersonate="true"/> 

Так почему я получаю никакой информации идентичности в мой контроллер?

Примечание: из интереса я также попытался использовать атрибут для проверки ввода в контроллер API, и я обнаружил, что, если я копаю глубоко через многие слои объектов, я могу найти текстовое представление имени моего окна - но нет IPrincipal. identity.Name ниже содержит имя пользователя

public override void OnAuthorization(HttpActionContext actionContext) 
     { 

      var wrapper = actionContext.ControllerContext.Request.Properties["MS_HttpContext"] as HttpContextWrapper; 
      if (wrapper == null) 
      { 
       Log.InfoFormat("Could not get http context."); 
       throw new AuthenticationException("Could not get authorization context"); 
      } 

      var identity = wrapper.Request.LogonUserIdentity; 
      if (identity == null) 
      { 
       Log.InfoFormat("Could not disover identity"); 
       throw new AuthenticationException("Could not get users identity"); 
      } 
     } 

ответ

0

FYI Я действительно обнаружил проблему. Если вы перейдете на панель свойств проекта Web API (а не щелкнуть правой кнопкой мыши -> Свойства), то есть просто панель «Свойства» файла csproj, тогда есть варианты для активации проверки подлинности Windows и отключения анонимной аутентификации. Это сработало

Смежные вопросы