【发布时间】:2018-08-21 00:40:41
【问题描述】:
背景: 我想在 ASP.NET Core 中开发一个多租户应用程序,并且一直在研究 Ben Fosters Saaskit 库,它似乎为多租户应用程序中的常见问题提供了很好的解决方案。
问题:
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 方法应该在为 ASP.NET 管道中的每个传入/传出请求运行的 Configure 方法中使用。
问题:
如何根据当前租户动态改变ConfigureServices方法中的cookie和OpenID Connect选项?
【问题讨论】:
-
目前作为 SaasKit 库中的拉取请求的可能解决方案 github.com/saaskit/saaskit/pull/96
-
1.创建一个服务 IUserAuthenticationManager,2. 使其成为一个单例,其中包含一个 IHTTPAccessor,3. 创建一个访问它的属性,它将从 HTTPCurrent 上下文解析您的用户 ID。 4. 使用该 userId 为您创建访问规则
标签: c# asp.net-mvc asp.net-core-mvc multi-tenant saaskit