2015-09-02 3 views
2

Я использовал визуальную студию 2015, создав простой веб-проект api на своем офисном ПК, который Windows зарегистрировал в домене компании (AD). Я изменил файл web.config для проверки подлинности интеграции - <system.web><authentication mode="Windows" />. URL http://localhost:23151/api/Model1 возвращает действительные данные XML из базы данных.User.Identity.Name is null?

Я изменил анонимную аутентификацию на Disabled и Windows Authentication на Enabled в свойстве проекта для параметров IIS Express (Development Server).

Я установил точку останова в public IQuerybal<Model1> GetModel1() и проверил значение User.Identity.Name, и он возвращает null?

Обновление: Что странно, я создал новый проект на другой компьютер (все еще в Visual Studio 2015), и я могу получил свой логин для Windows от собственности User.Identity.Name.

Обновление 2: Я попытался скопировать файлы проекта на новый компьютер и по-прежнему получил ту же проблему. Поэтому в проекте должны быть некоторые настройки. Очень странно.

+1

Ваш пользователь вошел в систему? – jgasiorowski

+0

Да, моя Windows вошла в компанию AD. – ca9163d9

+0

Возможный дубликат [HttpContext.Current.User null с проектом только для веб-API v2] (http://stackoverflow.com/questions/31078855/httpcontext-current-user-null-with-web-api-v2-only-project) –

ответ

7

В вашем вопросе не так много, но я полагаю, что вы пренебрегли санкционированием действия контроллера. Вам необходимо добавить атрибут [Authorize] либо к фактическому классу контроллера (для защиты всех действий внутри), либо к индивидуальному действию, с которым вы работаете здесь.

Если вам необходимо разрешить анонимный доступ к тем же действиям, вы также можете добавить атрибут [AllowAnonymous], но если у вас нет хотя бы [Authorize], то ни одна из данных пользователя не заполняется.

+0

xml-файл, возвращенный URL-адресом: ' Авторизация была отклонена для этого запроса. 'после проверки подлинности. «Имя» по-прежнему равно нулю, когда отладчик переходит в инструкции в методах управления ('Dispose'). – ca9163d9

+0

Пытался добавить оба '[Авторизовать] [AllowAnonymous]' перед действием и по-прежнему получил значение null для 'Name'. – ca9163d9

+1

Тогда вы фактически не вошли в систему. Если вы работаете в IIS, убедитесь, что Windows Auth действительно включен. –