Как передать информацию о текущем сеансе пользователя из веб-приложения на бизнес-уровень в ядре asp. net - PullRequest
1 голос
/ 15 января 2020

Как передать текущую информацию о сеансе пользователя из веб-приложения на бизнес-уровень в asp. net core?


Я пытался передать информацию о сеансе от контроллера конструктор объекта бизнес-логики c, однако я обнаружил пустое исключение для сеанса, поскольку сеанс не инициализируется до тех пор, пока запрос не будет завершен.

На самом деле, в моем проекте я использую DI, и я просто хотите передать информацию о сеансе из UI -> BL -> DA, чтобы я мог решить, какая строка подключения будет использоваться в DA, ​​на основе информации о сеансе пользователя, а также использовать текущий идентификатор пользователя в моей операции добавления и редактирования, чтобы поддерживать историю операции ,


Все службы DA и BL настроены с использованием DI, а службы вводятся с использованием DI.

   public class SystemUserController : BaseController
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        public BL.ISystemUserService _systemUserService { get; }
        public SystemUserController(BL.ISystemUserService systemUserService, IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
            _systemUserService = systemUserService;
            _systemUserService.Session = new RepositorySession(_httpContextAccessor.HttpContext.Session.CurrentUser().SystemUserId,DatabaseConnection.CONFIG);
        }

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Вы не можете получить доступ к значениям сеанса на бизнес-уровне.

Если вы хотите вести историю операций, вам нужно вызывать этот метод в своем веб-проекте, а не в BL ( Бизнес уровень).

0 голосов
/ 15 января 2020

Насколько я понимаю, вы пытаетесь реализовать многопользовательскую работу в своем приложении. Одна вещь, которую вы можете сделать, это написать собственное промежуточное ПО, которое извлекает информацию об арендаторе из сеанса. Затем вы можете внедрить этот резолвер арендатора в контроллер. Теперь у вас есть информация об арендаторе в вашем контроллере, где вы можете передать ее слоям BL и DA.

Пожалуйста, прочитайте ниже пост, чтобы получить полное понимание. https://benfoster.io/blog/asp-net-5-multitenancy Там он рассмотрел URL для идентификации пользователя. Но вместо этого вы можете использовать сессию с тем же логом c.

Это также прояснит для вас подробности https://michael-mckenna.com/multi-tenant-asp-dot-net-core-application-tenant-resolution

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...