Существуют ли .NET MAUI-эквиваленты Blazor WASM SetBrowserRequestCredentials?

У меня есть существующее приложение Blazor Webassembly, над которым я работал над созданием мобильных версий для использования .NET MAUI. Текущее приложение использует токен JWT с системой токенов обновления для аутентификации. Токены обновления предоставляются API в виде файлов cookie только для HTTP.

В Blazor Webassembly есть метод расширения для который возвращает файлы cookie в API. Код для этого request.SetBrowserRequestCredentials(BrowserRequestCredentials.Include);

В .NET MAUI пакет недоступен по умолчанию. Возможно, я смогу добавить его и выполнить эту работу, но предпочел бы использовать метод .NET MAUI для завершения этого, а не импортировать всю библиотеку только для отправки файлов cookie обратно в API.

Мне удалось реализовать обходной путь, который считывает заголовки из исходного вызова Set-Cookie из ответа API, а затем может возвращать это значение, добавляя заголовок Cookie, но это далеко не идеально.

Я опустил несколько подробностей о HTTP-запросах ниже, поскольку имя пользователя и пароль здесь не очень важны.

      // Send login request and get cookies
HttpRequestMessage loginRequest = new HttpRequestMessage(HttpMethod.Post, "/API/Login");
HttpResponseMessage result1 = await Http.SendAsync(loginRequest);
result1.Headers.TryGetValues("Set-Cookie", out IEnumerable<string>? cookies);

// Send refresh token request
HttpRequestMessage refreshRequest = new HttpRequestMessage(HttpMethod.Post, "/API/RefreshToken");
refreshRequest.Headers.Add("Cookie", cookies.First());
HttpResponseMessage result2 = await Http.SendAsync(refreshRequest);

Многое из того, что здесь находится, требует проверки на наличие нулей и работы, которая в противном случае не потребовалась бы с выпуском Blazor WASM. Так что, если лучшего решения не существует сейчас, надеюсь, оно появится в будущем.

0 ответов

Другие вопросы по тегам