2013-08-06 5 views
1

Я использую пользовательский JSONP форматировщик здесь: http://www.west-wind.com/weblog/posts/2012/Apr/02/Creating-a-JSONP-Formatter-for-ASPNET-Web-APIКак защитить запросы JSONP с помощью Web API?

Он прекрасно работает с последним Web API. Однако, как я могу ограничить, поэтому он недоступен для ВСЕЙ моей службы веб-API, но только те, которые я поместил в JSONP-атрибут или что-то еще. Любая идея о том, как защитить это только от определенных действий, которые я выбираю?

ответ

1

Вместо действий, если вы можете думать по строкам типа объектов, которые хотите вернуть как JSONP, вы можете изменить форматтера, как это, чтобы разрешить сериализацию только определенных типов как JSONP.

public override bool CanWriteType(Type type) 
{ 
    // Check type here and return true only for the types you want to allow JSONP 
    return true; 
} 

Если фильтрация типа на основе не представляется возможным, другой вариант будет не добавлять форматировщик в коллекцию Форматтеры и явно указать JsonpFormatter, как это, только в методах действий, которые вы хотите вернуть JSONP.

return new HttpResponseMessage() 
{ 
    Content = new ObjectContent<MyType>(anInstanceOfMyType, new JsonpFormatter()) 
}; 

Однако один недостаток - это возврат только JSONP, независимо от того, что вызывает связь.

Смежные вопросы