我有以下设置:
自主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包
答案 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*/);