#c# #asp.net #api #asp.net-core #asp.net-web-api
Вопрос:
У меня есть одна конечная точка API для входа в систему. Как только мы введем правильное имя пользователя и пароль, мы получим следующую информацию :
{
"accessToken": "Some_Value",
"accessTokenExpireAt": "Some_Value",
"refreshToken": "Some_Value",
"userID": "Some_Value"
}
Как только пользователь нажмет на кнопку «Отправить», будет выполнен приведенный ниже код.
public async Task<ActionResult> Index(LoginModel loginModel)
{
using (var client = new HttpClient())
{
string url = "URL_ENDPOINT_FOR_LOGIN";
client.DefaultRequestHeaders.Accept.Clear();
var response = await client.PostAsJsonAsync(url, loginModel);
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync();
//Здесь я получаю все значения в JSON в результате. Теперь я хочу перенаправить пользователя на страницу профиля, и на этой странице нужно вызвать другой API, который получит все сведения об этом пользователе. В результате я получаю идентификатор пользователя.
}
else
{
ModelState.AddModelError("", "Wrong details");
}
}
return View(loginModel);
}
Теперь у меня есть еще одна конечная точка API, когда мы вызываем ее, мы получаем данные пользователя, такие как имя, идентификатор электронной почты и так далее.
Мне нужно отобразить все данные пользователя в поле зрения, но только в том случае, если этот доступ будет открыт.
Поэтому я хочу знать, как я могу передать этот идентификатор доступа и идентификатор пользователя другому действию и весь URL-адрес API оттуда.
Комментарии:
1. Вам нужно будет включить код, который вы используете для обработки этого. Если все, что вам нужно сделать, это передать это
accessToken
следующему вызову, добавьте его в качестве параметра строки запроса/заголовка/тела запроса. Без вашего кода мы не сможем дать вам конкретный ответ.2. @Austin Я добавил код
3. Нам также нужна подробная информация о второй конечной точке. Как он принимает параметры? Какой глагол он использует?
4. Все еще неясно, с чем у вас проблема. Мы можем попытаться быть грубыми и предположить, что вы не можете прочитать JSON… или задать свойства объектов… но нам, наверное, следует быть повежливее. Пожалуйста, поясните, в чем у вас проблема.
5. Мне нужно сделать следующее : если имя пользователя и пароль верны, то токен будет возвращен, поэтому мне нужно перенаправить пользователя на какое-то другое действие, и в этом действии мне нужно установить этот токен в заголовке и вызвать друг друга API из этого действия.
Ответ №1:
Я делал что-то подобное раньше в веб-API.
Можете ли вы попробовать это в своем методе API:
return RedirectToAction("RedirectedAction",
"ControllerName",
new { val = value1, ..., val = valueN });
Где value1, … valueN-это параметры, которые вы передаете следующему методу API.
Заглушка перенаправленного метода затем:
public async Task<ActionResult> RedirectedAction(
string value1, string value2, ...)
{
...
}
(При необходимости измените типы параметров.)