Регистрация  |  Вход

Как получить userId в ApplicationDBContext (ASP.NET Core 2.0)

Привет гуру .NET

Начинаю изучение .NET Core и поэтому тут буду периодически задавать тупые нубские вопросы.

Если кто сможет помочь буду признателен.

Пытаюсь замутить следующую штуку!

Есть проект ASP.NET Core 2.0 MVC + Identity
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?tabs=visual-studio%2Caspnetcore2x

Все работает, пользователи создаются, редактируются.

Захотел добавить такую логику для того чтобы трекать время создания/обновления и кто это сделал
https://www.meziantou.net/2017/07/03/entity-framework-core-generate-tracking-columns

ВОПРОС.
Чтобы получить текущего пользовтеля используют вот этот подход
https://stackoverflow.com/questions/48554480/ef-core-get-authenticated-username-in-shadow-properties/48554738#48554738
и вот здесь
https://benjii.me/2014/03/track-created-and-modified-fields-automatically-with-entity-framework-code-first/

var currentUsername = !string.IsNullOrEmpty(System.Web.HttpContext.Current?.User?.Identity?.Name)
? HttpContext.Current.User.Identity.Name
: "Anonymous";

Почему-то используют UserName а не userID.
Почему так? В этом есть какой-то прикол?
И как вообще получить UserID в этом случае.
Простейший вопрос, но почему-то нифига не нагугливается с ходу.

Привет гуру .NET

Начинаю изучение .NET Core и поэтому тут буду периодически задавать тупые нубские вопросы.

Если кто сможет помочь буду признателен.

Пытаюсь замутить следующую штуку!

Есть проект ASP.NET Core 2.0 MVC + Identity 
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?tabs=visual-studio%2Caspnetcore2x

Все работает, пользователи создаются, редактируются.

Захотел добавить такую логику для того чтобы трекать время создания/обновления и кто это сделал
https://www.meziantou.net/2017/07/03/entity-framework-core-generate-tracking-columns

ВОПРОС.
Чтобы получить текущего пользовтеля используют вот этот подход
https://stackoverflow.com/questions/48554480/ef-core-get-authenticated-username-in-shadow-properties/48554738#48554738
и вот здесь
https://benjii.me/2014/03/track-created-and-modified-fields-automatically-with-entity-framework-code-first/

[code]var currentUsername = !string.IsNullOrEmpty(System.Web.HttpContext.Current?.User?.Identity?.Name)
            ? HttpContext.Current.User.Identity.Name
            : "Anonymous";
[/code]

Почему-то используют UserName а не userID.
Почему так? В этом есть какой-то прикол?
И как вообще получить UserID в этом случае. 
Простейший вопрос, но почему-то нифига не нагугливается с ходу.




Немного деталей.

В нете куча примеров как получить currentUserId из userManager.
Но сделать это можно в контроллере.

Пытался засунуть эти примеры в ApplicationDbContext и получил ошибку с циклической зависимостью почему собственно через контекст выше привел примеры.

Немного деталей.

В нете куча примеров как получить currentUserId из userManager.
Но сделать это можно в контроллере. 

Пытался засунуть эти примеры в ApplicationDbContext и получил ошибку с циклической зависимостью почему собственно через контекст выше привел примеры.

Вообще чем руководствуются разрабы когда для полей createdBy и updatedBy используют username в виде строки?
А ничего что пользователь может поменять это значение? Как авторы собираются привязывать записи к пользователям?

Вообще чем руководствуются разрабы когда для полей createdBy и updatedBy используют username в виде строки?
А ничего что пользователь может поменять это значение? Как авторы собираются привязывать записи к пользователям?

А, все, вроде нашел.

Сразу не бросилось в глаза потому что как-то сильно замудрено сделано

var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;

А, все, вроде нашел.

Сразу не бросилось в глаза потому что как-то сильно замудрено сделано

var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;