WCF数据服务,过滤$元数据请求

时间:2013-08-13 21:47:50

标签: authentication metadata wcf-data-services

我正在寻找一种简洁的方法来区分$metadata请求与实体请求与WCF数据服务( 5.5.0 )。

而不是在HTTP模块级别应用身份验证(作为已注册的IHttpModule ),我似乎必须在请求生命周期中稍后应用它。

不幸的是,我认为可以应用它的唯一“更晚”时间(并且不会干扰$metadata请求)是QueryInterceptor方法。这里的问题是,它们中有很多,而且我甚至需要复制所有这些方法调用来验证请求,这似乎很愚蠢。

我的问题可归结为:在WCF数据服务请求生命周期的哪一点,我应该执行身份验证,而不是干扰$metadata请求; ,如何测试请求是否为$metadata,以便我可以将身份验证逻辑提升回更高的方法。

在我看来,(读取:应该)是一个浮动的IsMetadataRequest属性,从而允许:

protected override void OnStartProcessingRequest(ProcessRequestArgs args) {
    base.OnStartProcessingRequest(args);
    if (IsMetadataRequest) {
        return;
    }
    // proceed with auth
}

我可以将一些东西放到一个只读取URI的服务基类中,但似乎应该有更多的定义。

0 个答案:

没有答案