2013-01-10 88 views
0

在我的RESTful API背後的數據模型中,有幾個實體具有CreatedBy/ModifiedBy字段。對這些數據的唯一訪問是通過我的API進行的,因此,這些字段應該填充用戶ID,向用戶發送請求到我的API。是否有默認的http請求標頭來標識發出請求的用戶?

我已經考慮要麼將這些字段通過我的API或預期包含所有PUT/POST/DELETE請求的用戶ID請求頭露出的車型。我會對哪種方法是最好的或任何其他方法有任何意見感興趣。

我喜歡在頭提供它的想法,因爲必須爲每個請求和我想知道是否有一個標準的請求報頭所包含的信息,或一個共同的x報頭。

我已經看到了從請求頭;但是,它似乎被定義爲發出請求的用戶的電子郵件地址,我需要傳遞用戶標識。

在我們當前的實現中,我們使用授權頭爲特定用戶進行身份驗證與API調用應用程序,而不是。

這頭你會用傳遞信息來識別發出請求的用戶?

回答

1

您可以擴展授權標頭以添加您自己的參數。 Digest和OAuth授權方案都支持參數。基本計劃已經具有可讀的用戶憑證。喜歡的東西:

Authorization: OAuth realm="Photos", 
    oauth_consumer_key="dpf43f3p2l4k3l03", 
    oauth_signature_method="HMAC-SHA1", 
    oauth_timestamp="137131200", 
    oauth_nonce="wIjqoS", 
    oauth_callback="http%3A%2F%2Fprinter.example.com%2Fready", 
    oauth_signature="74KNZJeDHnMBp0EMJ9ZHt%2FXKycU%3D", 
    xoauth_user_guid="alganet" 

雅虎在他們的OAuth實現中做了類似的事情,但在另一種情況下。

http://developer.yahoo.com/oauth/guide/oauth-accesstoken.html

但是,如果是顯示還是你的公共API在某種程度上暴露了這些領域,他們屬於RESTful資源,並應在身,而不是報頭總是表示。如果您在郵件正文中獲取用戶名,則還應該使用郵件正文對用戶名進行POST。

+0

的CreatedBy/ModifiedBy被所使用的只是審計字段中使用的URLConnection當手動檢查數據;他們永遠不會通過服務返回。這也不是授權的一部分。應用程序被授權使用API​​,而不是個人用戶。 –

0

假設可以使用的HttpClient

HttpClient client = HttpClientManager.getNewClient(); 
    HttpMethod get = new GetMethod(...); 
    get.addRequestHeader("x-newHeader", "value"); 

here

,或者使用setRequestParameter

+0

REST請求攔截器怎麼樣? – TheWhiteRabbit

+0

我知道如何添加自定義標題,我只是想知道是否有一個標準的標題用於這樣的事情。 –