У меня есть базовая служба веб-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");
}
}