2016-08-26 2 views
3

Я нашел эту ссылку:Получить свойство applicationuser из основного тождества asp.net

How to get the current logged in user Id ASP.NET Core

Но ответы все устаревшие!

И это ТАК сообщение не может быть ни решением, его просто шаблонный обходной путь: How should I access my ApplicationUser properties from within my MVC 6 Views?

В Mvc действия: base.User не является типа ApplicationUser ни в base.User.Identity. Оба не могут быть добавлены в ApplicationUser.

Как я могу получить доступ к своим пользовательским свойствам, помещенным внутри объекта applicationuser при входе в систему?

ответ

1

Для контроллера есть зависимость от UserManager<ApplicationUser>. Затем вы можете получить доступ к ApplicationUser через HttpContext запроса. Я написал метод расширения для моего проекта:

public static class IdentityExt 
{ 
    public static Task<T> GetCurrentUser<T>(this UserManager<T> manager, HttpContext httpContext) where T: class{ 
     return manager.GetUserAsync(httpContext.User); 
    } 
} 

Это возвращает текущий пользователь, и позволит получить доступ ко всем своим свойствам.

Здесь в действии:

public Task<IActionResult> Index(){ 
    var user = await _userManager.GetCurrentUser(HttpContext); 
} 
+0

f..k ... Я попробовал GetUserIdAsync, перед которым только принимающий ApplicationUser, и я не мог узнать, как получить/бросить его ... Почему нет ли перегруженного метода GetUserIdAsync (base.User)? глупый ... Спасибо Mike_G !!! Сначала я попытался получить Идентификатор пользователя, тогда я подумал, что на самом деле получить пользовательское свойство, а затем задал вопрос здесь :-) – Pascal

+0

@Mike_G ... хороший метод расширения. Я новичок в веб-разработке. Что/где - лучшее место в конвейере, чтобы получить объект пользователя, поэтому он всегда доступен и требуется только один раз. Кажется, что нужно повторять запрос на объект пользователя каждый раз, когда вам это нужно. – dinotom

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