Loopbackjs 如何根据loopback.js中的角色实现属性级掩码?

Loopbackjs 如何根据loopback.js中的角色实现属性级掩码?,loopbackjs,Loopbackjs,我在环回应用程序中创建了几个角色。根据用户的角色,是否有任何方法可以隐藏模型的某些属性?是。您可以创建一个函数,并根据用户的角色在该函数中删除某些特定字段。应该在要应用此规则的每个远程方法之后调用此函数(可以使用*在所有远程方法之后应用此函数) 下面是一个示例代码,我希望它能帮助您: const filterBasedOnRole= function (ctx, remoteMethodOutput, next) { const RoleMapping = SampleModel.app

我在环回应用程序中创建了几个角色。根据用户的角色,是否有任何方法可以隐藏模型的某些属性?

是。您可以创建一个函数,并根据用户的角色在该函数中删除某些特定字段。应该在要应用此规则的每个远程方法之后调用此函数(可以使用*在所有远程方法之后应用此函数)

下面是一个示例代码,我希望它能帮助您:

const filterBasedOnRole= function (ctx, remoteMethodOutput, next) {
    const RoleMapping = SampleModel.app.loopback.RoleMapping;
    if (ctx.req.accessToken && ctx.req.accessToken.userId) {
      RoleMapping.findOne({
        where: { principalId: ctx.req.accessToken.userId },
        include: 'role',
      }, (err, roleMapping) => {
        if (err) { return next(err); }
        if (!roleMapping) {
          //User doesn't have a role
        } else {
          const role = roleMapping.role().name;
          if (role === 'admin') {
             // Remove some fields from remoteMethodOutput
          }
        }
        next();
      });
    } else {
      // This user is not logged in, So it is a guest!
      next();
    }
};

SampleModel.afterRemote('search', filterBasedOnRole);  // Search is an example method, you can use whatever you want!