In ASP.NET Core 6, I need to get the current user in service layer
This is code:
<code>public class ServiceModel
{
private readonly IHttpContextAccessor accessor;
public ServiceModel(IHttpContextAccessor accessor)
{
this.accessor = accessor;
}
}
</code>
<code>public class ServiceModel
{
private readonly IHttpContextAccessor accessor;
public ServiceModel(IHttpContextAccessor accessor)
{
this.accessor = accessor;
}
}
</code>
public class ServiceModel
{
private readonly IHttpContextAccessor accessor;
public ServiceModel(IHttpContextAccessor accessor)
{
this.accessor = accessor;
}
}
But User is always Null:
<code>var user = accessor.HttpContext?.User
</code>
<code>var user = accessor.HttpContext?.User
</code>
var user = accessor.HttpContext?.User
Code in Program file:
<code>builder.Services.AddIdentity<AppUser, AppRole>(options =>
{
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+/ ";
options.User.RequireUniqueEmail = false;
})
.AddEntityFrameworkStores<testContext>()
.AddUserManager<UserManager<AppUser>>()
.AddClaimsPrincipalFactory<ApplicationUserClaimsPrincipalFactory>()
.AddDefaultTokenProviders();
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.Cookie.Name = "MyAppCookie";
options.LoginPath = "/Account/Login";
});
builder.Services.AddHttpContextAccessor();
</code>
<code>builder.Services.AddIdentity<AppUser, AppRole>(options =>
{
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+/ ";
options.User.RequireUniqueEmail = false;
})
.AddEntityFrameworkStores<testContext>()
.AddUserManager<UserManager<AppUser>>()
.AddClaimsPrincipalFactory<ApplicationUserClaimsPrincipalFactory>()
.AddDefaultTokenProviders();
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.Cookie.Name = "MyAppCookie";
options.LoginPath = "/Account/Login";
});
builder.Services.AddHttpContextAccessor();
</code>
builder.Services.AddIdentity<AppUser, AppRole>(options =>
{
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+/ ";
options.User.RequireUniqueEmail = false;
})
.AddEntityFrameworkStores<testContext>()
.AddUserManager<UserManager<AppUser>>()
.AddClaimsPrincipalFactory<ApplicationUserClaimsPrincipalFactory>()
.AddDefaultTokenProviders();
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.Cookie.Name = "MyAppCookie";
options.LoginPath = "/Account/Login";
});
builder.Services.AddHttpContextAccessor();
This the packages installed in Service Layer:
<code>Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore
Microsoft.AspNetCore.Mvc.ViewFeatures
</code>
<code>Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore
Microsoft.AspNetCore.Mvc.ViewFeatures
</code>
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore
Microsoft.AspNetCore.Mvc.ViewFeatures