Запрос авторизации в ASP.NET Web API на основе конкретного пользователя - PullRequest
2 голосов
/ 24 марта 2012

Я следовал этому руководству http://www.tugberkugurlu.com/archive/api-key-authorization-through-query-string-in-asp-net-web-api-authorizationfilterattribute, чтобы создать собственный фильтр авторизации.

У меня есть CarController с моим пользовательским атрибутом авторизации: [ApiKeyAuth ("apiKey", typeof (ApiKeyAuthorizer))]

Я посылаю два параметра в URL-адресе: host / Car / 4?= xxx & pass = xxx Это работает в принципе нормально, однако я хочу, чтобы только владельцы автомобилей могли видеть информацию об их автомобилях.Например, пользователь ABC может видеть только хост / Car / 5, а пользователь DEF может видеть хост / Car / 6 и хост / Car / 10, как я могу решить этот сценарий?Как я могу получить доступ к идентификатору автомобиля, используемого в запросе (хост / автомобиль / идентификатор) в моем ApiKeyAuthorizer.

Приветствия

1 Ответ

1 голос
/ 24 марта 2012

Если вы посмотрите на его код, https://github.com/tugberkugurlu/ASPNETWebAPISamples/tree/master/TugberkUg.Web.Http/src/samples и https://github.com/tugberkugurlu/ASPNETWebAPISamples/tree/master/TugberkUg.Web.Http/src/TugberkUg.Web.Http, Я думаю, вы обнаружите, что он извлекает данные непосредственно из строки запроса. Это просто вопрос расширения этого метода для включения параметра id. Возможно, вы также захотите взглянуть на RequestContentKeyValueModel для параметра HttpActionContext, переданного в метод OnAuthorization. Документация схематична, и я еще не играл с ней, но мне это кажется вероятным кандидатом. Однако данные о маршруте доступны косвенно через HttpRequestMessage через метод расширения , в частности :

message.GetRouteData ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...