如果是Windows组的一部分,OWIN自托管IAppBuilder映射

时间:2018-03-29 09:15:49

标签: owin windows-authentication katana

我有以下设置:

自主OWIN服务器(Windows服务)。在OWIN启动类中,我将httpListener配置为仅允许Windows身份验证。这很有效。

...
HttpListener listener = (HttpListener)app.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;

this.ConfigureSomeApp();
...

private void ConfigureSomeApp()
{
    app.Map("/someapp", someApp => { //appconfig here, ommitted for brevity };
}

我想要实现的目标只是映射" someapp"基于与当前用户有关的一些条件(即,如果用户是指定Windows组的成员)。

我似乎无法找到如何做到这一点。这可能吗 ?类似的东西:

private void ConfigureSomeApp()
{
    if(currentuser is in windowsgroup) //pseudo example condition I want to achieve
        app.Map("/someapp", someApp => { //appconfig here, ommitted for brevity };
}

如果在启动课程中不可能,那么您对如何实现这一目标的其他建议是什么?

有关信息:我不控制" someapp"实现,它来自NuGet包

1 个答案:

答案 0 :(得分:0)

这不是正确的方法

{
    if(currentuser is in windowsgroup) //pseudo example condition I want to achieve
        app.Map("/someapp", someApp => { //appconfig here, ommitted for brevity };
}

因为ConfigureSomeApp方法在启动时并且启动只运行一次,因此你的if语句不会为每个请求运行。

您必须使用app.MapWhen

app.MapWhen(context =>
        {
            // check the logic for user
            //context.Authentication.User

            return true; // return true if you want to map for this request
        }, someapp => /*config someapp*/);