简介
一直以来都是使用identity来做验证,因为ABP已经集成好的,但到了.NET CORE 3.0后一直想去改变引用.net 版本的identity问题,使用的是.NET FRAMWORK 4.6,本文就是为了脱离identity而写的
问题解析
使用ABP的时候,登录的时候,使用的是identity的UserManager.CreateIdentityAsyn来创建,ABP的AbpSession调用的是从这里拿到userId的,所以想要扩展AbpSession,需要由自己定义才能实现
登陆
使用官方CookieAuthentication身份验证Web程序
startup
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
}).AddCookie();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
app.UseAuthentication();
}
ClaimsIdentity
var claimsIdentity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
claimsIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()));
claimsIdentity.AddClaim(new Claim(AbpClaimTypes.UserId, user.Id.ToString()));
claimsIdentity.AddClaim(new Claim(AbpClaimTypes.UserName, user.UserName.ToString()));
if (tenant != null)
{
claimsIdentity.AddClaim(new Claim(AbpClaimTypes.TenantId, tenant.Id.ToString()));
}
IHttpContextAccessor
//校验、登记成功后
await _contextAccessor.HttpContext.SignInAsync(new ClaimsPrincipal(result.Identity));
内容不详,仅供参考
参考
基于IHttpContextAccessor实现系统级别身份标识