Почему API не получает токен?

Как я могу создать запрос с токеном авторизации через мой фронт-энд на C# ASP.NET API, чтобы он корректно извлекал токен из заголовка?
  • 25 марта 2024 г. 11:19
Ответы на вопрос 2
Есть несколько возможных причин, по которым API не получает токен:

1. Неправильно настроенные заголовки запроса: убедитесь, что вы отправляете токен авторизации в правильном формате (обычно в заголовке Authorization).

2. Проблемы с генерацией токена: проверьте, что вы правильно генерируете и передаете токен из вашего фронт-энда.

3. Проблемы с проверкой или расшифровкой токена на сервере API: убедитесь, что ваш сервер правильно настроен для проверки и расшифровки токена авторизации.

Чтобы создать запрос с токеном авторизации через ваш фронт-энд на C# ASP.NET API, вы можете использовать библиотеку HttpClient для создания запросов. Вот пример кода, который показывает, как отправить запрос с токеном авторизации в заголовке:

```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;

public class TokenHttpClient
{
    private static readonly HttpClient _client = new HttpClient();

    public async Task<string> GetProtectedData(string token)
    {
        _client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);

        HttpResponseMessage response = await _client.GetAsync("https://your-api-endpoint.com/protected/data");

        if (response.IsSuccessStatusCode)
        {
            string data = await response.Content.ReadAsStringAsync();
            return data;
        }
        
        return null;
    }
}
```

В этом примере мы устанавливаем заголовок Authorization с токеном Bearer в методе GetProtectedData, а затем отправляем GET запрос на ваш защищенный API эндпоинт. В ответе на запрос, вы получите защищенные данные, если запрос осуществлен успешно.
Обычно в Headers между парметром и значение ставится двоеточие. Здесь: 
Authorization Bearer {{accessToken}}
всё идёт одной строкой. И это у Вас работает.

Поставьте двоеточие, в этом случае обработка будет корректной, т.к. здесь:
context.Request.Headers["Authorization"].
у Вас идёт поиск заголовка "Authorization", а так как его нет, то и выражение:
string? token = context.Request.Headers["Authorization"].FirstOrDefault()?.Replace("Bearer ", "");
возвращает null
Похожие вопросы