Как я могу использовать токен для вызова авторизованного метода API?

#c# #asp.net-web-api #blazor-webassembly

#c# #asp.net-web-api #blazor-webassembly

Вопрос:

Я уже создал компонент входа в систему с клиента, и я просто хочу извлечь или использовать токен ответа с сервера для просмотра данных с авторизованного контроллера. Вот моя процедура входа в систему.

 private async Task LoginUser()
    { 
            var xx = await client.PostAsJsonAsync("api/login/loginuser", loginmodel);
    }
  

Комментарии:

1. Пожалуйста, дайте нам больше информации. Если вы отправляете логин и пароль, вам обычно не нужен токен. Вы должны получить его обратно после успешной проверки логина и пароля.

2. Да, я успешно внедрил страницу входа, что я хочу сделать, это извлечь токен и использовать для доступа к авторизованному контроллеру. Как и в Postman, токен ответа будет просто скопирован и вставлен в поле. Но я не знаю, как это сделать в blazor.

3. Является ли var xx вашим токеном? Как вы получаете токен из API?

4. var xx будет содержать ответ моего API входа в систему.

5. Я это понимаю. Какое значение будет иметь значение var xx?

Ответ №1:

Я думаю, вам нужно изменить свой код на это

 var httpClient = new HttpClient();
var response = await httpClient.PostAsJsonAsync(posturi, loginModel);
string token= await response.Content.ReadAsAsync<string>();
  

Чтобы получить доступ к службе Api, которой требуется авторизация токена, используйте этот код (также вы можете проверить эту ссылку https://learn.microsoft.com/en-us/aspnet/core/blazor/security/server/additional-scenarios?view=aspnetcore-3.1

          var httpClient =new HttpClient(); //or you can use your http client 
                                   //if you use HttpClient Factory.
         var request = new HttpRequestMessage(HttpMethod.... , 
            ...YourApiUrl);
        request.Headers.Add("Authorization", $"Bearer {token}");
        var response = await httpClient.SendAsync(request);
        .......
         .....
  

Комментарии:

1. Я предполагаю, что при получении моего токена произошла ошибка. У вас есть какие-либо идеи, как действительно получить токен? Я попробовал свой API входа в Postman, он отлично отвечает на токен, но в blazor я его не вижу.

2. Не могли бы вы включить в свой вопрос полный код задачи LoginUser()?