Home > Back-end >  .net core api 5.0 null HttpContext Identity User Name
.net core api 5.0 null HttpContext Identity User Name

Time:02-19

I have been searching here on who else has this issue with getting the User info from HttpContextAccessor.HttpContext.User.Identiy.Name

but it is always null.

I am using .net api core v5 and in my startup.cs

public void ConfigureServices(IServiceCollection services)
{
  services.AddHttpContextAccessor();
  ...
  services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  app.UseRouting();

  app.UseCors(AllowedOrigins);
  app.UseAuthentication();
  app.UseAuthorization();
  app.UseEndpoints(endpoints =>
  {
    endpoints.MapControllers();
  });
}        

In my visual studio launchSettings.json

{
  "iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": true, // also turned it to false to test
    "iisExpress": {
      "applicationUrl": "http://localhost:55555/",
      "sslPort": 44444
    }
  },

  ...
}

Here is my Controller with test code to get the user info

public class MyController : ControllerBase
    {
 
        private readonly IHttpContextAccessor httpContextAccessor;
        public MyController (IHttpContextAccessor _httpContextAccessor)
        {
            httpContextAccessor = _httpContextAccessor;
        }

        [HttpGet]
        public async Task<ActionResult<ReturnDto>> GetTestData()
        {
            string userName = httpContextAccessor.HttpContext.User.Identity.Name;

            // also try to get user from ControllerBase  
            var ControllerBaseName = this.User;
            Both of these test result are null.
            return Ok();
        }

    }

I cannot figure out why the HttpContext user is always null. I read a few post here but my startup.cs is the same. Another user said try ControllerBase.User but that is null too. I am testing this with my Visual Studio debugger

Is there another easier way to get the logged in userID?

Any help is appreciated. Thanks

CodePudding user response:

Are you configuring the authentication service to use Windows Auth?

services.AddAuthentication(IISDefaults.AuthenticationScheme);

more info here: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-5.0

CodePudding user response:

Figured it out, web.config authenication settings to get HttpContext user name to show

        <authentication>
            <anonymousAuthentication enabled="false" />
            <windowsAuthentication enabled="true" />
        </authentication>
  • Related