首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制对当前用户拥有的数据的服务响应

限制对当前用户拥有的数据的服务响应
EN

Stack Overflow用户
提问于 2017-05-20 23:35:37
回答 1查看 1.4K关注 0票数 7

在羽毛中,目标是限制在某个服务上访问的数据仅限于当前登录用户所拥有的数据。

假设我使用的是羽毛身份验证,此服务上可用的数据存储在数据库表中,并且包含用户ID的表列称为user_id,这个钩子能达到目标吗?

如果没有,那么需要改变什么呢?

如果能够回答这个问题是很重要的,那么我将使用Sequelize和Postgres。

代码语言:javascript
复制
const { authenticate } = require('feathers-authentication').hooks;

const { queryWithCurrentUser } = require('feathers-authentication-hooks');
const { associateCurrentUser } = require('feathers-authentication-hooks');

const readRestrict = [
  queryWithCurrentUser({
    idField: 'id',
    as: 'user_id'
  })
];

const modRestrict = [
  associateCurrentUser({
    idField: 'id',
    as: 'user_id'
  })
];

module.exports = {
  before: {
    all:    [ authenticate('jwt') ],
    find:   [ ...readRestrict ],
    get:    [ ...readRestrict ],
    create: [ ...modRestrict ],
    update: [ ...modRestrict ],
    patch:  [ ...modRestrict ],
    remove: [ ...modRestrict ]
  },

  after: {
    all:    [],
    find:   [],
    get:    [],
    create: [],
    update: [],
    patch:  [],
    remove: []
  },

  error: {
    all:    [],
    find:   [],
    get:    [],
    create: [],
    update: [],
    patch:  [],
    remove: []
  }
};

这似乎是可行的,但由于我是一个羽毛菜鸟,我想我最好先检查一下,然后才把它放进野外,以确保没有我不知道的情况会导致泄漏。

EN

回答 1

Stack Overflow用户

发布于 2017-09-19 09:01:10

作为一个玩具新手,对羽毛和表达,我不确定。现在,所有的工作如上所述。

旧答案

对于remove,我使用了restrictToOwner。(我也认为patchupdate是因为它们对现有数据进行操作。不过,我没有对此进行测试。否则,我就可以通过指定id来交叉删除数据。也许你也可以检查一下是否也是这样。

这是测试用例:

  1. 用户1使用创建模型对象
    • 用户id检查授权
    • 对象id来标识对象。

  1. 用户2使用对象id 删除对象。
    • 测试确定: 404预期
    • 测试失败: 204或200工作

  1. 用户1尝试获取对象
    • 测试确定:对象在那里,200
    • 测试失败:对象缺失,404

测试代码:

非常感谢,你的帖子对我真的很有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44091808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档