我需要在startup.cs(MVC .NET CORE)中获取当前登录的用户名
如果您有相同的解决方案,请告诉我。
提前致谢!
答案 0 :(得分:3)
Startup类的目的是配置应用程序依赖注入容器和请求管道。它不受请求的约束,只在应用程序启动时执行,因此名称为 Startup 。
您使用登录用户的典型位置是middleware和controllers。
答案 1 :(得分:0)
中间件是您正在寻找的。这是顺序的,因此,如果您首先放置中间件,您的中间件将拦截您选择的任何请求,并且如果您愿意,可以阻止访问应用程序的其余部分。
答案 2 :(得分:0)
必须指出,startup.cs在应用程序的整个生命周期中使用。 例如,在Configure方法中 - 在start up.cs中 - 我们处理应用程序错误。
您可以在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
}