#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()?