Bakground:我想在ASP.NET核心中开发一个多租户应用程序,并且一直在研究BenFosters萨斯基特库,它似乎为多租户应用程序中的常见问题提供了很好的解决方案。
问题: SaasKit有一个UsePerTenant方法,根据当前租户的不同,它很适合每个请求执行不同的事情。
我的目标是使用UsePerTenant方法,并通过依赖注入注入不同的IOptions对象。这可以在认证中间件中使用,如
AddAuthentication().AddCookie(..).AddOpenIdConnect(...)在ConfigureServices方法中配置的Startup.cs中的
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方法只能在每个应用程序启动时运行一次,而对于ASP.NET管道中的每个传入/传出请求,应该在Configure方法中使用UsePerTenant方法。
问题:如何基于当前租户动态更改ConfigureServices方法中的cookie和OpenID连接选项?
发布于 2018-04-25 15:52:13
我找到了一种为任何类型的ASP.NET核心选项(包括cookie或openID连接)获取每个租户选项的好方法。我已经将其封装到一个名为Finbuckle.MultiTenant的框架中。
基本上可以归结为这样的设置:
services.AddMultiTenant().
WithInMemoryStore()).
WithRouteStrategy().
WithPerTenantOptionsConfig<CookieAuthenticationOptions>((o, tenantContext) => o.Cookie.Name += tenantContext.Id);如果您很好奇,请访问我的这里以获得更多信息:https://www.finbuckle.com/MultiTenant
https://stackoverflow.com/questions/49244634
复制相似问题