мне нужно получить вошедшие в имени пользователя в startup.cs (MVC .NET CORE)Как получить текущее имя пользователя в startup.cs ядра asp.net?
Пожалуйста, дайте мне знать, если у вас есть какое-либо решение для таких же ..
Спасибо заранее!
мне нужно получить вошедшие в имени пользователя в startup.cs (MVC .NET CORE)Как получить текущее имя пользователя в startup.cs ядра asp.net?
Пожалуйста, дайте мне знать, если у вас есть какое-либо решение для таких же ..
Спасибо заранее!
Цель класса Startup заключается в настройке контейнера для зависимостей приложения и конвейера запросов. Он не связан с запросом и выполняется только при запуске приложения, отсюда и имя Ввод в эксплуатацию.
Типичное место, где вы бы использовали зарегистрированный пользователь: middleware и controllers.
Согласен с вами @Henk. Но мое требование: мне нужно захватить имя пользователя, когда пользователь получает доступ к приложению. Приложение использует проверку подлинности Windows. следовательно, нет страницы входа. Пользователь напрямую может перейти на любую страницу в приложении, используя URL-адрес (он может не попасть непосредственно на страницу на странице). Общая страница, которая запускается, когда когда-либо приложение обращается в startup.cs, поэтому я думал об использовании этого. – Vijay
Else Мне нужно добавить код регистрации во всех контроллерах. Опять же, это вызовет еще одну проблему: она добавит несколько записей (когда пользователь обновит страницу и всякий раз, когда пользователь перейдет на страницу). есть ли другая страница, кроме startup.cs, подходящая для этого требования? Пожалуйста, предложите – Vijay
Middleware - это то, что вы ищете. Это последовательно, поэтому, если вы разместите свое промежуточное ПО первым, ваше промежуточное программное обеспечение перехватит любой запрос, который вы выберете, и может запретить доступ к остальной части приложения, если вы этого захотите.
Следует указать, что 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
}
Это не походит на то, что это практично. Зачем вам это нужно, кроме того - почему вы предполагаете, что кто-то вошел в систему? В «Startup.cs» сервер буквально инициализирует ваше приложение для обслуживания, при этом говорится, что нет пользователя «вошедшего в систему», так как это предполагает, что приложение уже выпустило экран входа в систему, что означает «startup.cs» 'побежал раньше. –
Я согласен с @DavidPine и хотел бы добавить, что, похоже, вы почти ничего не исследовали, прежде чем задавать этот вопрос. – Brad
Согласитесь с вами @DavidPine и Brad. Но мое требование - мне нужно захватить имя пользователя, когда пользователь обращается к приложению. Приложение использует проверку подлинности Windows. следовательно, нет страницы входа. Пользователь напрямую может перейти на любую страницу в приложении, используя URL-адрес (он может не попасть непосредственно на страницу на странице). Общая страница, которая запускается, когда когда-либо приложение обращается в startup.cs, поэтому я думал об использовании этого. – Vijay