问题标签 [casl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
826 浏览

node.js - Mongoose 嵌套(2 级)查找

我正在尝试使用 CASL 对嵌套项目进行授权检查。它使用猫鼬查询数据和检查访问。

我的域名是:

  • “用户”可以拥有更多“车辆”
  • “文件”必须有车辆

架构:

要“按用户”查找车辆,我会:

这样可行。

在文档集合中,数据有这样的记录:

要“按用户”查找文档,我会:

它不起作用。是否可以在一个“查找”查询中做到这一点?

0 投票
2 回答
1025 浏览

sequelize.js - 将 Casl 与 Featherjs-Sequelize 集成

我正在尝试设置角色和权限来处理 api 请求。我将 Feathers.js 与 feathers-sequelize 一起用于 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

在提供的示例中,他们使用了续集范围,目前羽毛续集不支持带有参数的续集范围(据我所知)

长话短说,我正在尝试找到一种将 Feathers-sequelize 与 Casl 集成来管理资源权限的方法。

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

使用 Mongo/mongoose 时,您只需执行 toMongoQuery 并传入参数即可。

如果有什么我需要添加的,请告诉我,不知道如何在这个特定问题上获得帮助。

问候,埃米尔

0 投票
1 回答
119 浏览

casl - $elemMatch 支持(或替代)

我需要对对象数组进行查找操作以确定权限,基本上是根据对象是否存在于定义为主体属性的对象数组中来定义权限。

在 MongoDB 中我会使用 $elemMatch,是否支持?还是您推荐替代方案?

例子:

我需要定义一种能力,只允许名称为“Jane Doe”且头衔为“经理”的人更新部门名称。

请不要在这里关注非常糟糕的数据模型,它只是我试图实现的一个例子。主要关注点是基于对象在作为对象数组的字段中的存在的能力。

神奇的图书馆顺便说一句!

0 投票
1 回答
8096 浏览

laravel - 使用 vuejs 和 laravel 的权限和角色

这是我使用 CASL 的当前设置。目前它似乎没有读取我要导入到 ability.js 文件中的规则数组。如果您也想查看,我还将功能插件导入到 main.js 文件中

这是ability.js文件

这是调用规则列表的商店

这是保存在存储中的规则数组

0 投票
1 回答
431 浏览

vue.js - 如何在 Vuex 插件中观察突变

我尝试使用的插件有问题。请注意,刷新页面后代码工作正常,但是在初始登录时,它设置为 watch ( createSession) 的突变没有正确响应。我不确定是否有人熟悉CASL包,但我认为问题不存在,但也许我需要做一些事情才能使插件正常工作。

这是插件ability.js

这是我要导入的商店

我正在createSession使用来自初始登录操作的响应数据进行突变,这是在此处检索令牌和规则

任何帮助将不胜感激!!我一直在这个问题上停留了一段时间..

0 投票
2 回答
382 浏览

javascript - 如果“不能”,CASL 渲染子组件

@casl/react如果用户“不能”做某事,我如何显示子组件?

我问这个问题是因为如果用户未经授权但处于禁用状态,我仍然想渲染一个组件。

例子:

我想做的事:

0 投票
1 回答
3119 浏览

javascript - 在 CASL 中更新用户

我正在使用一个非常基本的CASL实现。不幸的是,文档不是那么详细。我有以下代码(基本上是从文档中复制粘贴的)。

其中defineAbilitiesFor定义为(在 ./ability.js 中)

我知道可以更新规则/条件(即ability.update([]))。但是初始化 CASL 后如何更新用户信息呢?(例如在用户登录后

0 投票
1 回答
869 浏览

javascript - 与 Angular 6 的 casl 集成

我正在尝试将 CASL 集成到我的 Angular 应用程序中。我不明白如何整合它。

在上面的代码中,我添加了能力、会话、可以管道、HTML 代码等所有必需的文件代码。我遵循了库给出的所有步骤' https://www.npmjs.com/package/@casl /角'。我收到“未捕获的错误:无法解析会话的所有参数:(?)。'这个错误。我不明白它有什么问题以及如何集成这个包。请帮忙。先感谢您。

0 投票
0 回答
1360 浏览

javascript - 使用 React 和 Redux 实现 CASL

我将参考这篇文章https://medium.com/dailyjs/managing-user-permissions-in-your-react-app-a93a94ff9b40

我将在我的反应应用程序中为某些路由实施基于角色的身份验证,并遇到了 CASL。我看到他们有一个反应实现,但有一个让我感到困惑的领域。请看下面的代码,我会在后面解释。

上面让我感到困惑的区域是导出默认函数中的“Todo” can(['read', 'create'], 'Todo') 这个“Todo”是什么?在文章中他这样描述它,“第二个参数是对象类型,在我们的例子中是 Todo,这个规则适用于它。” 他从哪里得到这个对象类型subjectName

我环顾四周,还通过 redux 找到了一个使用登录用户的示例(更接近我希望的实现)并找到了这个https://github.com/stalniy/casl/issues/148

我想要实现的内容:我的申请是针对大学的,并且是针对大学级别的研究人员的资助网站的翻版。(IE 研究人员可以查看可用的赠款、向他们申请等)我将有管理员可以登录到同一个应用程序并能够上传赠款和接受/拒绝研究人员的赠款申请。因此,我需要能够保护路由免受某些用户角色的影响。

我希望它如何工作:用户登录。如果研究人员 -> 允许他们查看所有授权并申请给他们,如果管理员 -> 查看授权申请并接受/拒绝它们,也可以查看他们的状态 本质上隐藏两个人的路线。(管理员不能申请资助,研究人员不能接受申请等)

任何有关如何在反应中实现这一点的信息将不胜感激。

0 投票
1 回答
2388 浏览

reactjs - 如何将普通对象传递给 CASL (React) 的权限

如何将条件传递<Can />给与能力对象中的条件匹配的组件。

向我的AbilityBuilder应用程序公开权限:

应该呈现段落的组件。

如何传递对象而不是类的实例?我还没有找到任何相关信息:(