我已經在下面的資源是基於用戶登錄的類型訪問的要求如何在admin-on-rest中爲資源設置動態網址?
R1:/mit/oss/12345/peers
R2:/mit/md/6879/ngrp
R1應該使用ID的用戶可訪問: 12345.並且R2應該可以由id-6879的用戶訪問。
問題是 - 如何根據記錄用戶的動態值(如:URL中的userId)定義資源URL。我知道aor-permissions庫根據用戶權限切換菜單,但是可以使用URL中的id動態定義資源本身嗎?
我已經在下面的資源是基於用戶登錄的類型訪問的要求如何在admin-on-rest中爲資源設置動態網址?
R1:/mit/oss/12345/peers
R2:/mit/md/6879/ngrp
R1應該使用ID的用戶可訪問: 12345.並且R2應該可以由id-6879的用戶訪問。
問題是 - 如何根據記錄用戶的動態值(如:URL中的userId)定義資源URL。我知道aor-permissions庫根據用戶權限切換菜單,但是可以使用URL中的id動態定義資源本身嗎?
你可以在你的休息客戶端上編寫一個封裝器,它可以攔截這個調用並動態生成URL。
基本上裝點其餘客戶喜歡在這裏的文檔 - >https://marmelab.com/admin-on-rest/RestClients.html#decorating-your-rest-client-example-of-file-upload
然後,您可以在下面的僞代碼
if (type === 'AOR_REST_TYPE' && resource === 'BASE_RESOURCE') {
if (getUserFromLocalStorage === usr1) {
url = url1
} else {
url = url2
}
options.method = 'GET';
// other options
}
這裏檢查的情況下,就像是重新映射資源URL的一個簡單的例子使用地圖。
import {simpleRestClient} from 'admin-on-rest';
// Update the remap table appropriately to map from a resource name to a different path
const remap = {
"resource1" : "resource1Remapped",
"releasepresets" : "productionintents/releasepresets"
}
const simpleRestClientWithResourceUrlRemap = (apiUrl) => {
var client = simpleRestClient(apiUrl);
return (type, resource, params) => {
if (remap[resource]) {
console.log('remapping resource from ' + resource + ' to ' + remap[resource]);
resource = remap[resource];
}
return client(type, resource, params);
}
}
export default (simpleRestClientWithResourceUrlRemap);
可以使用具有邏輯的函數來代替簡單的重映射。
完美的作品!謝謝。 –