2017-07-10 128 views
0

我正在實施Single Sign On功能。我有一個ColdFusion應用程序,它從Java應用程序(POST請求)獲取輸入參數。我需要做的是返回狀態代碼和說明,以指示用戶是否有權訪問,如果用戶無權訪問我的CF應用程序,則說明失敗的原因。 類似下面: enter image description here如何在ColdFusion中向客戶端發送HTTP狀態碼和響應消息?

我創建了一個CFC並提供了這是一個API,允許Java的用戶在他們的用戶名,客戶ID傳遞給我的CF應用。 我是否需要在同一個文件中寫入返回響應邏輯?就像一個「拋出」錯誤代碼(cfthrow)的函數。

或可能是我可以用「cfheader」 ......這樣的事情:

<cfif form.CustomerId EQ queryname.CustID> 
<CFHEADER 
    STATUSCODE="200" 
    STATUSTEXT="Success"> 

<cfelse> 
<CFHEADER 
    STATUSCODE="400" 
    STATUSTEXT="Insufficient Input"> 
</cfif> 

任何人都可以在這裏幫我嗎?

+0

如果您的信息將被普通人閱讀,只需提供信息即可。不要使用狀態代碼或其他一般不瞭解的東西對其進行識別。 –

+0

@DanBracuk:實際上,系統會根據狀態讀取狀態消息,並更新相應的表格。 – Vasu

+1

你爲什麼要返回'400',因爲'客戶ID不存在'而不是['404'(未找到)](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10 .4.5)?類似地,爲什麼「無效密碼」400而不是[401(未授權)](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1)和「用戶帳戶鎖定」401以及不是[403(禁止)](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3)? – MT0

回答

1

您可以使用:

component restpath = "your/rest/path" rest="true" 
{ 
    remote void function errorTest() 
    httpmethod = "GET" 
    restpath = "" 
    { 
    cfheader(
     statuscode = 401, 
     statustext = "Invalid Password" 
    ); 

    // or 

    restSetResponse({ 
     status = 401, 
     headers = { explanation = "Invalid Password" } 
    }); 

    // or, using Java 

    getPageContext() 
     .getResponse() 
     .getResponse() 
     .sendError(JavaCast('int', 401), "Invalid Password"); 

    // or, using the deprecated setStatus(int,string) method in Java 

    getPageContext() 
     .getResponse() 
     .getResponse() 
     .setStatus(JavaCast('int', 401), "Invalid Password"); 
    } 
} 

注:我還沒有找到一種方法來直接設置使用restSetResponse()所以這將返回,而不是消息自定義標題的消息。

相關問題