如果 Windows 组的一部分,则 OWIN 自托管 IAppBuilder 映射
OWIN self-host IAppBuilder map if part of Windows group
我有以下设置:
自托管 OWIN 服务器(Windows 服务)。在 OWIN 启动 class 中,我将 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 };
}
如果在启动过程中无法做到这一点 class,对于如何实现这一点,您还有哪些其他建议?
有关信息:我不控制 "someapp" 实现,它来自 NuGet 包
这不是正确的方法
{
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*/);
我有以下设置:
自托管 OWIN 服务器(Windows 服务)。在 OWIN 启动 class 中,我将 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 };
}
如果在启动过程中无法做到这一点 class,对于如何实现这一点,您还有哪些其他建议?
有关信息:我不控制 "someapp" 实现,它来自 NuGet 包
这不是正确的方法
{
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*/);