Можно ли изменить код ответа при сбое авторизации пользователя на сервере данных?
Можно ли изменить 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;