如何防止 feathers.js 返回用户路由中的所有用户

How to prevent feathers.js from returning all users in the users route

我已经使用 feathers.js 一段时间了,但有些东西我四处寻找后找不到。如何防止经过身份验证的用户看到所有用户?

当我在我的 /users 路线上与邮递员进行 GET 时,如果我通过身份验证,我将收到在该应用程序上注册的所有用户。我该如何防止这种情况。我尝试返回我自己的自定义响应,但这似乎阻止了 /authentication 路由。

任何帮助将不胜感激,因为羽毛非常好用。

您可以使用 limitskip 参数。因此,当您执行 FIND (GET) 请求时,也发送限制:5,跳过:0。这是一种在 feathersjs 中进行分页的方法。

您可以在这里查看:https://docs.feathersjs.com/api/databases/common.html#pagination

或者,如果你想为某个服务的分页设置默认值,你可以在初始化阶段进行,像这样:

app.use('/users', service({
  paginate: {
    default: 5,
    max: 25
  }
}));

目前feathers-authentication-hooks是最好的限制查询方式,最常用于关联当前用户。因此,为了将所有请求限制为当前经过身份验证的用户,您可以这样做:

const { authenticate } = require('@feathersjs/authentication');
const { setField } = require('feathers-authentication-hooks');

app.service('users').hooks({
  before: {
    all: [
      authenticate('jwt'),
      setField({
        from: 'params.user.id',
        as: 'params.query.id'
      })
    ]
  }
})