如何格式化OWIN中间件的响应

时间:2016-03-23 02:30:46

标签: angularjs asp.net-web-api owin

目前,这是Owin响应的格式:

{
    access_token: "qefelgrebjhzefilrgo4583535",
    token_type: "bearer",
    expires_in: 59
}

但我的网络API的所有其他回复都采用以下格式:

{
    status: 200,
    data: {id = 1, name = 'test'}
}

我们可以看到数据是响应JSON的成员,可以使用response.data访问。

所以现在的问题是如何将我的owin身份验证器响应格式化为这样。

{
    data : {
         access_token: "qefelgrebjhzefilrgo4583535",
         token_type: "bearer",
         expires_in: 59    
    }

}

由此,在我的拦截器中,无论是正常请求还是令牌认证请求,我都可以返回response.data

目前我有这个实现来检查响应是来自令牌还是来自正常请求而我不喜欢它。

RestangularConfigurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
           if (url.indexOf('token'))
               return response;
           else 
                return response.data;
        });

1 个答案:

答案 0 :(得分:0)

不,我认为你不能。 OAuth响应是内部构建的,您应该坚持使用该格式。

还有另外一个answer,这是一个非常类似的问题。你总是可以从sratch建立一个新的OAuth提供者,但我认为这有点矫枉过正。

无论如何,如果问题出在JS部分而您不想检查“令牌”字符串,可以尝试这种方式:

RestangularConfigurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
       if (response.data !== undefined)
           return response.data;
       else return response;
    });