Добавление пользовательского заголовка ответа в класс IHttpActionResult (или добавление токена аутентификации в качестве ответа) - PullRequest
0 голосов
/ 20 июня 2019

Я пытался создать элемент управления для входа в мой проект 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);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...