- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ASP.NET 5 和 EF7 编写 Multi-Tenancy Web 服务。存储库数据特定于租户/用户。因为我将在所有调用中使用 TenantId,所以我想用当前的 TenantId 初始化存储库。
public class MyRepository {
private int tenantId;
public MyRepository(MyDbContext context, int tenantId) {
this.tenantId = tenantId;
// ...
}
public Task<List<Data>> GetAllAsync() {
return this.context.Data.Where(d => d.TenantId == this.tenantId).ToListAsync();
}
}
public class Startup {
public void ConfigureServices(IServiceCollection services) {
// How do I pass the TenantId to the constructor?
services.AddScoped<MyRepository>();
}
}
最佳答案
您的租户和用户 ID 值都是运行时数据,您应该 not inject runtime data into the components of your system (在这种情况下是您的存储库),因为这会使您的组合根非常复杂(正如您已经经历的那样)并且几乎不可能验证您的对象图。运行时数据应流经已构建的对象图。基本上有两种方法可以实现这一点。要么通过组件的公共(public) API 的方法调用传递数据,要么注入(inject)一个组件,该组件负责在请求时检索运行时值。
在您的情况下,后一种选择是最好的。因此,我的建议是注入(inject)一个允许检索此上下文信息的组件:
public interface ITenantContext
{
int CurrentTenantId { get; }
}
public interface IUserContext
{
int CurrentUserId { get; }
}
public class MyRepository {
private readonly Func<MyDbContext> contextProvider;
private readonly ITenantContext tentantContext;
public MyRepository(Func<MyDbContext> contextProvider, ITenantContext tentantContext){
this.contextProvider = contextProvider;
this.tentantContex = tentantContex;
}
public Task<List<Data>> GetAllAsync() {
return this.contextProvider().Data
.Where(d => d.TenantId == this.tenantContext.CurrentTenantId)
.ToListAsync();
}
ITenantContext
知道如何为当前请求检索正确的租户 ID 的实现。例如:
public sealed class AspNetSessionTenantContext : ITenantContext {
public int CurrentTenantId {
get { return (int)HttpContext.Current.Session["tenantId"]; }
}
}
关于asp.net-mvc - 如何使用依赖注入(inject)将 UserId/TenantId 传递给存储库构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32685571/
假设我的 Azure AD 租户 e426c4ff-bbb4-4edb-96c8-4e0244ff8fd0 中有一个租户应用程序。我无法通过 https://login.microsoftonline
我正在尝试创建一个简单的 react 表单来将数据提交到 webapi,但是我收到此错误 Unhandled Rejection (TypeError): Cannot read property '
下午好 我猜想这个关系是正确的: Azure Tenant » Azure Subscription » Azure Automation » Runbook 因此我有这个问题: 是否有
我正在尝试进行身份验证和应用程序并获取不记名 token 以供进一步使用。我收到错误,这是该线程的标题。 另一个线程描述了同样的事情,只是我的代码是用 Java 编写的。解决方法是使用证书方法。 "T
我们正在使用 Play! HTTP session 的框架。 tenantId 和 ipAddress 是多个表中通用的列。 当用户登录时,我们将 tenantId 存储在 HttpContextSe
如果我使用基于消费计划的 azure 函数,我在哪里可以找到应用程序 ID 和租户 ID?在这种情况下,它没有连接到任何应用服务。 此时,我需要信息来检索 token 以在本地访问 key 保管库。
我正在尝试通过 Azure Active Directory 为我的应用程序创建身份验证,但运气不佳。 我在 Portal.azure.com 中创建了一个新的 Azure Active Direct
我正在尝试通过 Azure Active Directory 为我的应用程序创建身份验证,但运气不佳。 我在 Portal.azure.com 中创建了一个新的 Azure Active Direct
我正在将一个应用程序从单租户转移到 Multi-Tenancy 。在此过程中,我将 tenantId 添加到所有必需的模型并更新了数据库 (Entity Framework 5)。 但是,我有所有需要
我读了B2C access token documentation ,我注意到 tenantId 声明 (tid) 不在列表中。这不同于正常的 Azure Active Directory访问 tok
我正在尝试使用 rust package oauth2 (4.2.0) 使用 azure msal 2 进行单点登录。Azure 阻止使用“通用”端点 https://login.microsofto
我正在尝试使用带有 Azure 云资源管理和身份 API 的 azure java SDK 从 azure 客户端创建资源组。我正在 IntelliJ 中使用 Azure Tools 插件(我可以使用
我正在尝试使用 rust package oauth2 (4.2.0) 使用 azure msal 2 进行单点登录。Azure 阻止使用“通用”端点 https://login.microsofto
我正在尝试使用带有 Azure 云资源管理和身份 API 的 azure java SDK 从 azure 客户端创建资源组。我正在 IntelliJ 中使用 Azure Tools 插件(我可以使用
我正在使用 ASP.NET 5 和 EF7 编写 Multi-Tenancy Web 服务。存储库数据特定于租户/用户。因为我将在所有调用中使用 TenantId,所以我想用当前的 TenantId
我已经浏览过https://learn.microsoft.com/en-us/azure/data-factory/data-factory-copy-activity-tutorial-using
我们正在尝试在后端路由上使用@hapi/bell 来提供授权。身份验证策略使用 azure 作为提供者,方案为 bell 这就是我注册策略的方式。由于显而易见的原因,clientId、clientSe
我们正在尝试在后端路由上使用@hapi/bell 来提供授权。身份验证策略使用 azure 作为提供者,方案为 bell 这就是我注册策略的方式。由于显而易见的原因,clientId、clientSe
我正在尝试获取 Azure 函数应用程序的访问 token 。我已启用managed identity for the function App (system assigned) ,但是在使用 Az
我正在尝试获取 Azure 函数应用程序的访问 token 。我已启用managed identity for the function App (system assigned) ,但是在使用 Az
我是一名优秀的程序员,十分优秀!