我们正在尝试在我们使用 OWIN(包括 FB、谷歌、实时登录)的项目上设置一个白标。有没有办法动态设置他们的 API 凭证,比如说如果他们改变域,设置就会改变。
我认为 owin 比 MVC 更早加载?有没有办法可以在 Global.asax(Request) 上加载它?
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
更新:
换句话说,单个应用程序将托管许多域和子域(白标)。
最佳答案
我今天一直在谷歌上搜索同样的东西。然后我在 http://aspnet.codeplex.com/SourceControl/latest#Samples/Katana/BranchingPipelines/BranchingPipelines.sln 找到了一个不错的 OWIN 样本。这解释了 OWIN 的分支功能。如果我正确理解此示例,您应该能够根据请求参数(例如主机 header 、cookie、路径或使用 app.Map() 或 app.MapWhen() 方法的任何内容)配置不同的 OWIN 堆栈。
假设您有 2 个不同的 DNS 域,代表 2 个具有不同登录配置的客户,您可以根据主机 header 的值初始化 OWIN 以使用不同的配置:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapWhen(ctx => ctx.Request.Headers.Get("Host").Equals("customer1.cloudservice.net"), app2 =>
{
app2.UseWsFederationAuthentication(...);
});
app.MapWhen(ctx => ctx.Request.Headers.Get("Host").Equals("customer2.cloudservice.net"), app2 =>
{
app2.UseGoogleAuthentication(...);
});
}
}
关于asp.net-mvc - 动态设置 OWIN(按域),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24422903/