2013-05-21 11 views
5

È possibile modificare il codice di risposta HTTP nel mio server DataSnap (Delphi XE3) quando l'autorizzazione dell'utente non riesce? Attualmente sta restituendo HTTP/1.1 500 Errore interno del server, che può verificarsi in molti altri scenari e non aiuta a descrivere il problema.È possibile modificare il codice di risposta quando l'autorizzazione dell'utente non riesce in un server datasnap?

Lungo la stessa idea, è possibile modificare il corpo di risposta predefinito? Al momento restituisce {"errore": "USER non è autorizzato a eseguire l'azione richiesta."}, che va bene, ma mi piacerebbe restituire un oggetto JSON personalizzato se possibile.

Grazie per il vostro tempo!

risposta

5

ho finito per l'esecuzione di codice che si presentava così in TDSAuthenticationManager.OnUserAuthorize


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

E 'possibile ottenere il THTTPDSResponse all'interno di un ServerClass? Es:

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