хорошо, поэтому, если я правильно понимаю, вы входите в систему и создаете токен, затем с вашего контроллера MVC вы хотите вызывать конечные точки API и использовать для этого сохраненный токен.
Кажется, что вы разместили кодсуществует в вашем контроллере MVC.
using (var client = new HttpClient())
{
//here retrieve the token from where you stored it
string accessToken = "whatever";
client.BaseAddress = new Uri("http://localhost:59983/api/flight");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
var responseTask = client.GetAsync("flight");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsAsync<IList<tblFlight>>();
readTask.Wait();
flights = readTask.Result;
}
else
{
flights = Enumerable.Empty<tblFlight>();
ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
}
}
Теперь, если вы вызываете конечную точку API напрямую из javascript, то в этот момент вам нужно будет сделать ее доступной для вашего клиента, что теоретически. То, что вы могли бы сделать, это сохранить токен в хранилище на стороне клиента, чтобы вы могли получить его, когда вам нужно, и я вижу, что вы уже делаете это на стороне клиента.
Если он вам нужен в вашемКонтроллер MVC, затем получите его из сеанса и передайте его конечной точке API. В этом случае вы можете использовать начальный дополнительный вызов, вы все равно получите свой токен на стороне клиента, после чего просто вызовите дополнительную конечную точку MVC, передайте ей токен и сохраните его в сеансе. Этот способ иметь его как на стороне клиента, так и на стороне сервера, если вам это нужно.
Комбинация MVC, Web API - это всего лишь подделка всего. Причина в том, что MVC, очевидно, имеет доступ к Session, в то время как предполагается, что Web API не имеет состояния, поэтому нет доступа к Session. Теоретически конечная точка Web API, которая является частью приложения MVC, может получить доступ к объекту Session, хотя этого я бы избегал. Я предпочитаю хранить Web API как отдельный проект, но знаю, что это не всегда возможно.