Bakground: 我想在ASP.NET Core中开发一个多租户应用程序,并且一直在研究Ben Fosters Saaskit库,它似乎为多租户应用程序中的常见问题提供了很好的解决方案 .
Problem: SaasKit有一个 UsePerTenant
方法,根据当前租户的不同,每个请求可以执行不同的操作 .
我的目标是使用 UsePerTenant
方法结合通过依赖注入注入的不同 IOptions
对象 . 这可以在身份验证中间件中使用
AddAuthentication().AddCookie(..).AddOpenIdConnect(...)
这是在Startup.cs中的 ConfigureServices
方法中配置的
public class Startup
{
// Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
...
}
// Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
...
}
}
我无法使ASP.NET 2.0中的身份验证中间件对每个请求使用不同的 IOptions
对象,因为Startup.cs文件中的 ConfigureServices
方法仅在每次应用程序启动时运行一次,并且 UsePerTenant
方法应该在运行的 Configure
方法中使用对于ASP.NET管道中的每个传入/传出请求 .
Question: 如何根据当前租户动态更改 ConfigureServices
方法中的cookie和OpenID Connect选项?
2 回答
我找到了一种很好的方法来获取任何类型的ASP.NET Core选项的每个租户选项,包括cookie或openID Connect . 我把它包装成一个名为Finbuckle.MultiTenant的框架 .
它基本上归结为一个看起来像这样的设置:
如果您感到好奇,请在此处查看我的更多信息:https://www.finbuckle.com/MultiTenant
以下PR为上述问题提供了解决方案 . https://github.com/saaskit/saaskit/pull/96
PR已经与“主”分支合并了 .
它还没有合并(2018年11月)