Я разрабатываю веб-приложение с использованием Asp.Net MVC6 (vNext), Identity 3.0. * Beta3. Это трехуровневое приложение с пользовательским интерфейсом, службами и БД. Я могу зарегистрировать пользователя с классом Asp.net SignInManager
, и я пытаюсь получить информацию о пользователе с ролями & претензий на уровне службы, чтобы я мог проверить, имеет ли пользователь разрешение на выполнение определенных действий.Thread.CurrentPrincipal Identity.Name is null в asp.net mvc 6 (vNext)
Как получить текущее имя пользователя из текущего идентификатора запроса запроса на уровне обслуживания. В MVC 5 я использовал Thread.CurrentPrincipal
для этого. Но в MVC6 Identity.Name
из Thread.CurrentPrincipal
установлено значение null.
Может ли кто-нибудь дать мне знать, как я могу это сделать? Кроме того, если у вас есть лучшее решение, сообщите мне.
Я знаю, что главный объекта HttpApplication настроенной нити к HttpContext, когда он получает нить. Вы пробовали HttpContext.Current.User, тоже null? –
@ RazvanDumitru Спасибо за ответ. Можете ли вы сообщить мне, как получить HttpContext на уровне службы? – neomanni
ASP.Net 5 написан таким образом, чтобы его можно было полностью тестировать с минимальным количеством статических свойств. Таким образом, такие значения, как главный пользователь, должны быть переданы в ваш уровень обслуживания в качестве параметра. (На самом деле это не ответ, а рекомендация следовать принятым шаблонам проектирования.) Кроме того, поскольку способ «асинк» меняет ситуацию, информация, зависящая от потока, может быть потеряна. –