2014-01-10 4 views
1

Число столбцов в базе данных хранятся в зашифрованном виде (и мы застряли с этим в обозримом будущем)Перехватив и шифрование данных в OData фильтре, прежде чем она потребляется в ASP.Net WebAPI

http://localhost/Car?$filter=Name eq 'Ford' 

Я хотел бы перехватить запрос и обновить фильтр так, чтобы он выглядел как «Name eq» ENCRYPTED_TEXT », чтобы запрос мог найти запись в базе данных.

Я посмотрел на queryOptions.Filter, и это выглядит правильно, но я не уверен, что это лучший способ сделать это? Нужно ли просто де-построить фильтр, используя строковые манипуляции? или есть лучший способ? (я не хочу изучать каждую странность синтаксического анализа строки запроса odata, если я могу ее избежать)

FYI, мне нужно сделать это для нескольких столбцов в каждой таблице. Я выставляю так многократно используемую C# требуется решение.

Спасибо за вашу помощь заранее!

Джо

ответ

0

Вы можете удалить [Queryable] атрибут из ваших конкретных методов контроллера и управления выполнять поиск данных самостоятельно. Смотрите этот пост на тему ...

Modifying response content returned from ASP.NET Web API using OData QueryableAttribute

+0

Джейсон, спасибо за ответ. Я знаю, что я могу напрямую использовать queryOptions. Вопрос заключается в том, что лучше всего подходит для модификации фильтра queryOptions, к которому не привязано ваше сообщение, с которым вы связаны. –

+0

Не уверен, что это лучшая практика, но я бы, вероятно, рассмотрел создание атрибута пользовательского атрибута действия, который наследует класс QueryableAttribute специально для этой специальной обработки. Затем вы можете применить этот настраиваемый атрибут к своим методам. Вот MSDN для атрибута ... http://msdn.microsoft.com/en-us/library/system.web.http.queryableattribute%28v=vs.111%29.aspx – Jason

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

  • Нет связанных вопросов^_^