2016-10-25 2 views
-1

мне нужно получить вошедшие в имени пользователя в startup.cs (MVC .NET CORE)Как получить текущее имя пользователя в startup.cs ядра asp.net?

Пожалуйста, дайте мне знать, если у вас есть какое-либо решение для таких же ..

Спасибо заранее!

+1

Это не походит на то, что это практично. Зачем вам это нужно, кроме того - почему вы предполагаете, что кто-то вошел в систему? В «Startup.cs» сервер буквально инициализирует ваше приложение для обслуживания, при этом говорится, что нет пользователя «вошедшего в систему», так как это предполагает, что приложение уже выпустило экран входа в систему, что означает «startup.cs» 'побежал раньше. –

+0

Я согласен с @DavidPine и хотел бы добавить, что, похоже, вы почти ничего не исследовали, прежде чем задавать этот вопрос. – Brad

+0

Согласитесь с вами @DavidPine и Brad. Но мое требование - мне нужно захватить имя пользователя, когда пользователь обращается к приложению. Приложение использует проверку подлинности Windows. следовательно, нет страницы входа. Пользователь напрямую может перейти на любую страницу в приложении, используя URL-адрес (он может не попасть непосредственно на страницу на странице). Общая страница, которая запускается, когда когда-либо приложение обращается в startup.cs, поэтому я думал об использовании этого. – Vijay

ответ

2

Цель класса Startup заключается в настройке контейнера для зависимостей приложения и конвейера запросов. Он не связан с запросом и выполняется только при запуске приложения, отсюда и имя Ввод в эксплуатацию.

Типичное место, где вы бы использовали зарегистрированный пользователь: middleware и controllers.

+0

Согласен с вами @Henk. Но мое требование: мне нужно захватить имя пользователя, когда пользователь получает доступ к приложению. Приложение использует проверку подлинности Windows. следовательно, нет страницы входа. Пользователь напрямую может перейти на любую страницу в приложении, используя URL-адрес (он может не попасть непосредственно на страницу на странице). Общая страница, которая запускается, когда когда-либо приложение обращается в startup.cs, поэтому я думал об использовании этого. – Vijay

+0

Else Мне нужно добавить код регистрации во всех контроллерах. Опять же, это вызовет еще одну проблему: она добавит несколько записей (когда пользователь обновит страницу и всякий раз, когда пользователь перейдет на страницу). есть ли другая страница, кроме startup.cs, подходящая для этого требования? Пожалуйста, предложите – Vijay

0

Middleware - это то, что вы ищете. Это последовательно, поэтому, если вы разместите свое промежуточное ПО первым, ваше промежуточное программное обеспечение перехватит любой запрос, который вы выберете, и может запретить доступ к остальной части приложения, если вы этого захотите.

0

Следует указать, что startup.cs используется на протяжении всего жизненного цикла приложения. Например, в методе Configure - в начале up.cs - мы обрабатываем ошибки приложения.

Вы можете retrive информацию о пользователе из контекста HTTP следующим образом:

public void Configure(IApplicationBuilder app, IHostingEnvironment  
env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 
     if (env.IsDevelopment()) 
     { 
      app.UseBrowserLink(); 
      app.UseDeveloperExceptionPage(); 
      app.UseDatabaseErrorPage(); 
     } 
     else 
     { 
      app.UseExceptionHandler(errorApp => 
      { 
       errorApp.Run(async context => 
       { 
        context.Response.StatusCode = 500; 
        var error = context.Features.Get<IExceptionHandlerFeature>(); 
        if (error != null) 
        { 
         Exception ex = error.Error; 
         var theUser = context.User.Identity.Name; 
         //send email with user name 
      //do somehting 
        } 
       }); 
      }); 
     } 

    //part omitted for simplicity 
} 
Смежные вопросы