Можно ли изменить код ответа при сбое авторизации пользователя на сервере данных?

Можно ли изменить HTTP-код ответа на моем сервере DataSnap (Delphi XE3) при сбое авторизации пользователя? В настоящее время возвращается HTTP / 1.1 500 Internal Server Error, которая может произойти во многих других сценариях и не помогает описать проблему.

Наряду с той же идеей, возможно ли изменить тело ответа по умолчанию? В настоящее время возвращается {"error":"USER не авторизован для выполнения запрошенного действия."}, Что нормально, но я бы хотел вернуть пользовательский объект JSON, если это возможно.

Спасибо за ваше время!

2 ответа

Решение

Я закончил выполнение кода, который был похож на это в TDSAuthenticationManager.OnUserAuthorize


  if valid = false then
  begin
    GetInvocationMetadata.ResponseCode := 403;
    GetInvocationMetadata.ResponseMessage := JSONResponseObject.ToString;
    GetInvocationMetadata.ResponseContent := JSONResponseOjbect.ToString;
  end

Возможно ли получить THTTPDSResponse внутри серверного класса? Пример:

TServerClass1.EchoString(val: string);
begin
  GetDSResponse.Header.Add('someheader');
end;
Другие вопросы по тегам