Я хочу отправить данные в свой API и рассчитал элементы как возвращаемые и сгенерированный токен для привязки в качестве ключа с вычисленными элементами, моя проблема в том, что мне не удалось узнать, как восстановить токен во время аутентификации клиента из моего API.
Это мой КОД API:
public class PricingController : ApiController
{
[BasicAuthentication]
public async Task<HttpResponseMessage> GetPricing(ArrayList paramList)
{
if (paramList.Count > 0)
{
try
{
Double Premium = 0;
Profil pf = Newtonsoft.Json.JsonConvert.DeserializeObject<Profil>(paramList[0].ToString());
//////////////////Charger le programme etr lancer le calcul
//var prog = db.Profils.Find(pf.IdProfil);
if (pf.IdProfil == 1)
{
CourtierImmobilier Ci = new CourtierImmobilier(paramList);
List<string> verify = Ci.VerifObject();
if (verify[0] == "False")
{
Premium=Ci.calculate();
return Request.CreateResponse(HttpStatusCode.OK, new { premium = Premium, IdSubmession = "a0000123", DateExpire = DateTime.Today });
}
else
{
var message = verify[1];
HttpError err = new HttpError(message);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, err);
}
}
else
{
var message = string.Format("Profil Introuvable!!!");
HttpError err = new HttpError(message);
return Request.CreateErrorResponse(HttpStatusCode.NotFound, err);
}
}
catch (Exception e)
{
string m = e.Message;
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, m );
}
}
else
{
var message = string.Format("Liste d'objets est vide !!!");
HttpError err = new HttpError(message);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, err);
}
}
}
Это мой клиентский код:
[HttpPost]
public async Task<ActionResult> Index(bool b = false)
{
HttpClient client = new HttpClient();
string authInfo = "xxxX" + ":" + "fduujsj";
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authInfo);
Uri baseAddress = new Uri("http://localhost:44235/");
client.BaseAddress = baseAddress;
JArray paramList = new JArray();
Client Cl = new Client { IdClient = "t018794", FirstName = "ALain", LastName = "Carpentier", Adress = "App 302, 789 fay", PostalCode = "H8y1H2", City = "souf", DriverLicense = "4389954587", BirthDate = Convert.ToDateTime("11/23/1984")};
paramList.Add(JsonConvert.SerializeObject(CL));
HttpResponseMessage response = client.PostAsJsonAsync("api/Pricing/Pricing", paramList).Result;
try
{
if (response.IsSuccessStatusCode)
{
var list1 = await response.Content.ReadAsStringAsync();
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
dynamic dobj = jsonSerializer.Deserialize<dynamic>(list1);
var premium = dobj["premium"];
var IdSubmession = dobj["IdSubmession"];
//var DateExpire = dobj["DateExpire"];
ViewBag.Premium = "Final Price : " + premium + " ID : " + token;
return View();
}
else
{
var ErrMsg = JsonConvert.DeserializeObject<dynamic>(response.Content.ReadAsStringAsync().Result);
ViewBag.error = " Error : " + (int)response.StatusCode + response.ReasonPhrase + ErrMsg;
return View();
}
}
catch (Exception e)
{
string m = e.Message;
return View();
}
}
}
Я использую базовую аутентификацию http, но я ищу, когда клиент вызывает мой API после аутентификации, я получаю токен, сгенерированный системой во время аутентификации, и сохраняю его в базе данных. Если система генерирует токен с использованием базовой аутентификации http





Вы используете удостоверение ASP.NET? Если да, то как выглядит конфигурация аутентификации? Я предполагаю из вашего вопроса, что вы хотите заменить
basicauth в своем клиентском коде наbearer token?