Я пытался создать элемент управления для входа в мой проект Web Api. Все работает отлично, я также обработал генерацию токенов и функции аутентификации. Моя главная проблема заключается в том, что я не могу доставить в ответ на запрос токен, который я сгенерировал как метод аутентификации для пользователя. Я пробовал несколько вещей, но ни одна из них не работает.
Эти примеры были собраны путем просмотра stackoverflow, чтобы увидеть, работает ли какое-либо из решений, но пока безрезультатно. Я также могу опубликовать используемые вспомогательные классы (такие как HttpActionResultExtensions.cs, который добавляет к результату метод «AddHeader»).
public class LoginController : ApiController
{
private UserService _userService = new UserService();
[HttpPost]
public IHttpActionResult Authenticate([FromBody]LoginRequest loginData)
{
IHttpActionResult response;
LoginResponse loginResponse = new LoginResponse { };
if (loginData == null)
{
loginResponse.responseMsg.StatusCode = HttpStatusCode.BadRequest;
response = ResponseMessage(loginResponse.responseMsg);
return response;
}
User user = _userService.Authenticate(loginData.Username, loginData.Password);
if (user.Token == null)
{
loginResponse.responseMsg.StatusCode = HttpStatusCode.Unauthorized;
response = ResponseMessage(loginResponse.responseMsg);
return response;
}
/*Request.Content.Headers.Add("Authorisation", user.Token);
Request.Headers.Add("Authorisation", user.Token);
return Ok(loginResponse);*/
/*HttpResponseMessage responseMessage = new HttpResponseMessage(HttpStatusCode.OK);
responseMessage.Content.Headers.Add("Authorisation", user.Token);
//response.Content.Headers.Add("Access-Control-Expose-Headers", "Filename");
responseMessage.Content.Headers.Add("Access-Control-Expose-Headers", "Authorisation");
ResponseMessageResult responsez = new ResponseMessageResult(responseMessage);
return responsez;*/
//return Ok(user).AddHeader("Authorisation", user.Token);
//return new HeaderActionResult(Tuple.Create("Authorization", user.Token));
var Result = new { Status = "Ok", Message = user };
var Response = Request.CreateResponse(HttpStatusCode.OK, Result);
Response.Headers.Add("Authorisation", user.Token);
return ResponseMessage(Response);
}
}