У меня проблема с моим проектом Web Api. У меня есть файлы, хранящиеся в моей базе данных, и вы хотите их напрямую вызвать в новом окне для просмотра/сохранения (например:/api/Files/5 - 5 beeing the FileId). NET Web API 2 OWIN-указатель на токен аутентификации прямой вызов
У меня все время работает с указателем-носителем для моих общих запросов AJAX с AngularJS для обычных Данных, и это работает как шарм. Для файла я создал контроллер, который показывает файл в браузере с соответствующим MIME-типом. Но теперь, когда я изменил действие на [Авторизовать], я получил Access Denied, который является правильным, потому что я не передал access_token в HTTP-заголовке.
Я сделал довольно некоторое исследование, если можно пропустить токен через строку запроса, но не нашел ничего полезного.
Теперь мой план состоит в том, чтобы удалить атрибут [Авторизовать] от моего контроллера и попытаться проверить токен самостоятельно, но я не знаю, как это сделать.
Кто-нибудь знает, как я могу заставить его работать?
Thx для ответа. Это работает, но это не так. Отладчик попадает в код, и токен читается правильно, но у меня все еще появляется сообщение об ошибке, которое я не авторизовался. Если я пытаюсь жестко кодировать токен, я получаю дублируемую ошибку для запросов, которые фактически имеют атрибут authorzation ... Мое предположение заключается в том, что этот обработчик срабатывает после проверки? – Marvin
@Marvin Ожидается дублирующаяся ошибка. Как я уже сказал, я не поместил логику для обработки случая, когда в запросе уже есть заголовок авторизации. Сначала размещение обработчика делегирования в конвейере ('Insert (0, ...)') должно выполняться до того, как авторизация начнется. –
Другим важным моментом является кодирование токена, если оно передано в строке запроса. Поскольку '=' может быть частью токена, он может усечь значение из 'GetQueryNameValuePairs()'. Вы должны проверить, совпадает ли маркер, который вы передаете в строке запроса, как переменная 'bearerToken', когда вы устанавливаете точку останова. Если это так, это объясняет 401, поскольку токен-носитель не распознается. –