Я новичок в .netcore, я работаю над веб-API, работающими в Docker-контейнере, и, используя почтальон, веб-API работают очень хорошо, выводя результаты. Я хочу создать в .netcore программу, вызывающую конечные точки webapi и получающую ответ и использующую этот конкретный ответ в других конечных точках с MVC.
Объяснение приведено ниже.
Имя пользователя и пароль по умолчанию для администратора заданы по умолчанию, например username:admin , password: helloworld
, При первом входе администратора в API требуется новый личный пароль, как показано на рисунке Почтальона ниже.
API для входа в систему: localhost://..../v1/users/login
Первый вопрос: как передать значения в Authorization-> BasicAuth, используя .netcore.
Тело API выглядит как на рисунке ниже.
После установки new_password ответом API является токен, как показано ниже.
Затем конкретный токен используется в среде для создания пользователя. Изображение для более ясной проблемы приведено ниже.
Наконец, токен затем используется для выполнения других вызовов API, таких как создание пользователя.
API: https://localhost/..../v1/users
Изображение ниже.
Как новичок в языке .netcore, я действительно изо всех сил пытаюсь делать такого рода вызовы API, так как большинство обучающих программ, которые я попробовал, генерируют свой собственный токен из API, но здесь я просто хочу взять токен ответа и сохранить а затем использовать его в других вызовах API.
Поддержка сообщества StackOverflow всегда была для меня очень полезна.
Код, который я пробую, приведен ниже.
**Controller**
public class Login_AdminController : ControllerBase
{
[Route("/loginAdmin")]
[HttpPost]
public async Task<string> LoginAdminAsync([FromBody] dynamic content)
{
LoginAdmin L = new LoginAdmin();
var client = new HttpClient();
client.BaseAddress = new Uri("https://localhost:9090");
var request = new HttpRequestMessage(HttpMethod.Post, "/v1/users/login");
var byteArray = new UTF8Encoding().GetBytes($"<{L.username}:{L.df_Password}>");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var formData = new List<KeyValuePair<string, string>>();
formData.Add(new KeyValuePair<string, string>("new_password", "helloWorld123!"));
request.Content = new FormUrlEncodedContent(formData);
var response = await client.SendAsync(request);
Console.WriteLine(response);
return content;
}
}
}
***Model***
public class LoginAdmin
{
public string username = "admin";
public string df_Password = "secret";
public string new_Password { get; set; }
}
Спасибо.