2

我有一个要求,根据登录的用户类型访问以下资源。

R1:/mit/oss/12345/peers

R2:/mit/md/6879/ngrp

R1 应可由 id 为 12345 的用户访问。R2 应可由 id 为 6879 的用户访问。

问题是 - 如何根据记录它的用户定义具有动态值的资源 URL(例如:URL 中的 userId)。我知道 aor-permissions 库可以根据用户权限切换菜单,但是是否可以使用 URL 中的 id 动态定义资源本身?

4

2 回答 2

1

您可以在您的休息客户端上编写一个包装器,该包装器可以拦截调用并动态生成 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       
    }
于 2017-06-27T06:23:49.743 回答
0

这是一个使用映射重新映射资源 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);

可以使用具有逻辑的函数来代替简单的重新映射。

于 2018-01-23T23:56:49.917 回答