2016-11-14 5 views
0

Надеюсь, кто-то может помочь мне здесь. Я новичок в ASP, MVC и C#, но пытаюсь создать веб-приложение, чтобы изучить его. Я создал приложение по умолчанию, которое создает все контроллеры, представления и т. Д. Для пользователей, и все работает хорошо.Как получить UserID от Microsoft.AspNetCore.Identity в классе неконтроллеров

Теперь я создал класс и внутри этого класса, мне нужно получить идентификатор пользователя или имя пользователя вошедшего в систему пользователя. Я попытался вставить UserManager и SignInManager в конструктор класса, но затем любые контроллеры, вызывающие этот вызов, жалуются, что я не передаю требуемые параметры.

Это может быть нахальный, но если у кого-то есть базовый пример того, как получить что-то вроде идентификатора пользователя внутри класса, я, вероятно, мог бы работать в обратном направлении и понимать, что происходит. Был поиск часов в режиме онлайн, но не может найти никаких примеров, которые работают.

Использование VS 2015 Asp ядро ​​Net RC2

Благодарности

+0

попробуйте использовать 'this.User' в контроллере –

ответ

2

Идентификатор пользователя существует в HttpContext. Идентификация просто добавляет помощников, но вам все равно нужен экземпляр HttpContext, который у вас не будет за пределами контроллера. Казалось бы, это яркий пример проблемы XY, в которой вы спрашиваете, как сделать что-то, чтобы решить проблему определенным образом, вы решили приблизиться к ней, а не спрашивать о том, как решить проблему самостоятельно. Вообще говоря, если вам нужен идентификатор пользователя вне контроллера, вы должны просто передать литеральный идентификатор пользователя с контроллера на все, что вы вызываете, вместо того, чтобы пытаться извлечь его оттуда.

+0

Спасибо Крису. Возможно, вы правы в том, что я могу ошибаться в решении проблемы. Это для меня часть учебного процесса. В принципе, мне нужен доступ к userId или UserName в классе, который вызывается из двух разных контроллеров. Теперь я попытался вставить UserManager в эти контроллеры, используя userManager.GetUserAsync (HttpContext.User). Чтобы получить идентификатор и передать его в класс, но теперь я получаю ссылку на нулевой объект в GetUserAsync (HttpContext.User) , –

+0

Способ получения идентификатора пользователя - 'User.Identity.GetUserId()', для которого требуется пространство имен Microsoft.AspNet.Identity. Если вы настроили первичный ключ для пользователя Identity, вам нужно использовать общую версию этого файла, то есть 'User.Identity.GetUserId ()' где 'T' - тип первичного ключа. –

+1

Что делать, если я использую Microsoft.AspNetCore.Identity? В этом случае GetUserID() не существует. –

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

  • Нет связанных вопросов^_^