WCF Ajax服务 - 捕获基于令牌的API的单个服务的所有请求

时间:2014-12-09 15:51:46

标签: asp.net-mvc wcf asp.net-web-api

我有一个启用了ajax的WCF服务来处理第三方用户请求。服务类中有大量的方法。每个方法的请求结构都是一个JSON,并且有两个"子对象" - 标题和属性。所有方法的标题都是相同的。属性可以具有不同的结构(取决于每种方法的需要)。

像这样:

    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service
    {
        [OperationContract]
        [WebInvoke(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, Method = "POST")]
        public JSONResponseGetList GetList(JSONRequestGetList data)
        {
            //check if the data.header.securityToken is valid
        }
    ..
  ..

这是 JSONRequestGetList

public class JSONRequestGetList 
{
    public class AttributesClass 
    {
        public Int64 timeStamp { get; set; }
        public int maxCount { get; set; }
    }

    public ModelRequestHeader header { get; set; }
    public AttributesClass attributes{ get; set; }
}

..这里是 ModelRequestHeader ,对于所有类型的请求都是一样的:

public class ModelRequestHeader
{
    public string version { get; set; }
    public string securityToken { get; set; }
}

现在我的问题 - 我在每个检查 securityToken 是否有效的方法中都有重复的代码。相同的" IF"在每种方法中。有没有办法以某种方式拦截" Header"每个请求的结构我的"服务"在一个地方上课并且可能以某种方式装饰我的方法(例如类似于WebAPI中的[Authorize]或[AllowAnonymous]),所以它会自动进入方法内部或返回401 Unauthorized?

非常感谢

1 个答案:

答案 0 :(得分:1)

查看包含名为IParameterInspector的方法的BeforeCall界面。

  

在发送客户端调用并返回服务响应之前调用。

它以对象数组的形式接管操作名称和客户端传递给它的输入。