如何在asp.net核心的startup.cs中获取当前登录的用户名?

时间:2016-10-25 15:21:23

标签: asp.net-core

我需要在startup.cs(MVC .NET CORE)中获取当前登录的用户名

如果您有相同的解决方案,请告诉我。

提前致谢!

3 个答案:

答案 0 :(得分:3)

Startup类的目的是配置应用程序依赖注入容器和请求管道。它不受请求的约束,只在应用程序启动时执行,因此名称为 Startup

您使用登录用户的典型位置是middlewarecontrollers

答案 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
}