首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Casl与Featherjs集成-续订

将Casl与Featherjs集成-续订
EN

Stack Overflow用户
提问于 2018-07-19 15:37:15
回答 2查看 1.2K关注 0票数 0

我正在尝试设置角色和权限来处理api请求。我使用带有羽毛的Feathers.js - PostGres数据库的续集。

对于管理角色和权限,我使用的是casl.js:https://github.com/stalniy/casl

大多数集成Casl的例子都是基于mongo/mongoose的。我在后面阅读了以下文章:https://stalniy.github.io/casl/abilities/database/integration/2017/07/22/database-integration.html

在这个例子中,如果他们使用自动跟踪范围,目前羽毛-后缀不支持带参数的自动跟踪范围(据我所见)。

长话短说,我正试图找到一种方法,集成羽毛-续集与Casl,以管理资源权限。

到目前为止,我可以为每个用户构建Casl的“能力”,但是现在将这些能力连接到数据库是我陷入困境的地方。

当使用Mongo/mongoose时,它很容易,因为您只需执行toMongoQuery并传递参数。

如果我有什么需要补充,请告诉我,不知道如何在这个特定的问题上寻求帮助。

你好,埃米尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-20 07:05:23

因此,我设法解决了这个问题:我复制了以下代码:https://github.com/stalniy/casl-feathersjs-example/blob/master/src/hooks/abilities.js

然后,我通过添加以下函数对其进行了调整:

代码语言:javascript
复制
function ruleToQuery(rule) {
  if (JSON.stringify(rule.conditions).includes('"$all":')) {
    throw new Error('Sequelize does not support "$all" operator')
  }
  return rule.inverted ? { $not: rule.conditions } : rule.conditions
}

然后我替换了这一行:

代码语言:javascript
复制
const query = toMongoQuery(ability, serviceName, action)

使用

代码语言:javascript
复制
const query = rulesToQuery(ability, action, serviceName, ruleToQuery)

进口后

代码语言:javascript
复制
const { rulesToQuery } = require('@casl/ability/extra');

我的问题之一是我创建许可的方式,这与羽毛和CASL没有直接关系。

如果你有类似的问题,但上面的答案不清楚,请评论。

票数 2
EN

Stack Overflow用户

发布于 2018-07-20 04:13:15

您可以使用params.sequelizeparams.query + 函数

看看CASL羽毛实例,看看我是如何为feathers-mongoose做这件事的

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

https://stackoverflow.com/questions/51426762

复制
相关文章

相似问题

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