2013-05-21 1 views
5

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

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

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

ответ

5

Я в конечном итоге выполнение кода, который выглядел как это в TDSAuthenticationManager.OnUserAuthorize


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

Можно получить THTTPDSResponse внутри ServerClass? Пример:

TServerClass1.EchoString(val: string); 
begin 
    GetDSResponse.Header.Add('someheader'); 
end;