我的组织需要一个共享数据库上的多租户解决方案。基于[Gunnar Peipman][1]创建的示例,我创建了一个具有属性的BaseEntity类
Guid TenantId {get; set;}
实际
Tenantprovider
已作为调用临时虚拟对象的服务实现
TenantId
.
public interface ITenantProvider
{
Guid GetTenantId();
}
public class DummyTenantProvider : ITenantProvider
{
public Guid GetTenantId()
{
return Guid.Parse("069b57ab-6ec7-479c-b6d4-a61ba3001c86");
}
}
我想用当前用户的实际Tenantid替换这个假人,但是我不能让它工作。我尝试了以下操作,但无法检索用户的tenantid(在applicationuser中创建为属性)。
public class RealTenantProvider : ITenantProvider
{
private readonly IHttpContextAccessor _contextAccessor;
public RealTenantProvider(IHttpContextAccessor contextAccessor)
{
_contextAccessor = contextAccessor;
}
public Guid GetTenantId()
{
var curUsr = _contextAccessor.HttpContext.User;
if (curUsr.Identity.Name != null)
{
return Guid.Parse(curUsr.FindFirst("TenantId").Value);
}
return Guid.Parse("00000000-0000-0000-000-000000000000");
}
}
然而,
curUsr.Identity.Name
尽管用户已登录,但始终为空。有其他方法可以获得自定义属性吗
特南蒂
从ApplicationUser返回?
看起来像是‘我很亲近,但还没有雪茄。’感谢您的指导。