问题标签 [cancan]

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 投票
3 回答
2347 浏览

ruby-on-rails - 在 Rails 3 中处理多租户的最佳方法

我正在构建多租户应用程序。

所有数据的隔离都是由每个表中的 TenantID 列完成的。

为所有租户模型自动处理多租户的最佳方法是什么。

例子:

目前我在 CanCan gem 中看到了类似的东西,它可以获取特定用户参数的记录。但它没有为插入和更新操作提供任何东西。或者可能是我不明白该怎么做。

问候,阿列克谢·扎哈罗夫。

0 投票
2 回答
2622 浏览

ruby-on-rails - Integrate Mongoid and CanCan

Have somebody tried to rewrite CanCan ActiverRecordAddtions for Mongoid http://github.com/ryanb/cancan/blob/master/lib/cancan/active_record_additions.rb

Regards, Alexey Zakharov

0 投票
3 回答
2856 浏览

ruby-on-rails - 不能显示授权的视图元素

我正在尝试使用带有 Rails 的 devise/cancan 获得一些基本的身份验证/授权。我没有使用像 Ryan B 的截屏视频和其他示例这样的角色,而是尝试做一些基本的事情:

1 - 用户可以登录
2 - 用户只能编辑/销毁他们自己的文章(没有角色,您要么已登录并且可以创建新文章并编辑/销毁自己的文章,要么您已注销并且您只能见文章和登录)

我在第一部分使用设计,效果很好,但我无法让第二部分与 CanCan 一起使用。当您登录时,文章的编辑和销毁链接不会出现,即使文章是给其他用户的,直接 URL(例如 /articles/3/edit)仍然允许。

ability.rb的是

articles_controller.rb

以及列出文章的视图部分_article_list.html.erb

使用此设置,除非有毯子,否则视图中的编辑/销毁链接不会显示can :manage, :all,甚至can :manage, Article不起作用。正如我上面提到的,它也不会限制实际操作,因为您可以直接链接到编辑文章并且它允许这样做。

我不确定我在这里做错了什么。能得到一些帮助会很棒。

提前感谢
杰森

0 投票
1 回答
1612 浏览

ruby-on-rails - Cancan 可以用于限制对单个模型的特定值的访问吗?

我有一个具有类别的 Rails 3 应用程序。类别可由具有类别所有者角色的人管理。但是类别所有者应该只能访问他拥有的类别,而不是其他人。我可以使用 CanCan 锁定管理功能,但我需要自己限制特定类别。

0 投票
1 回答
433 浏览

ruby-on-rails - 使用 CanCan 指定拒绝访问的原因

我真的很喜欢 Rails 授权宝石CanCan。但是,我发现自己在某些特权上有多个条件,并且我希望能够向用户提供不同的错误消息,具体取决于他或她被拒绝访问的原因。

CanCan 有这种行为的机制吗?我很难找到它。我是否必须自己分叉并添加该行为?

0 投票
1 回答
781 浏览

ruby-on-rails - 如果用户尝试访问授权部分,如何在 Rails 中显示登录模式

每当用户尝试访问授权内容时,您将如何实现一个模式窗口,上面写着“为了访问此区域,您必须登录..”并结合其下方的登录表单。我正在使用Rails 3、Devise 和 CanCan

我的第一个想法是把它放在 application_controller.rb 的某个地方:

0 投票
1 回答
4385 浏览

ruby-on-rails - Rails 可以授权嵌套资源

我有嵌套在用户资源中的项目资源。

我的康康能力课是:

和项目控制器:

我有几个问题:

是否可以拒绝:读取用户并允许:读取项目,以便每个人都可以访问 /users/10/projects,但不能访问 /users/10 或 /users?

如何拒绝用户访问:使用其他 user_id 的新操作?例如,如果我添加

此代码允许 id 为 42 的用户访问 /user/41/projects/new。

0 投票
1 回答
909 浏览

ruby-on-rails - inherit_resources 和 cancan 冲突

与inherited_resources 和Ryan Bates 的cancan gem 存在冲突。

我有一些简单的控制器

和路线

一切看起来都正确,但在尝试请求http://localhost:8080/issues/tag/tag1 我看到

从控制器中删除 load_and_authorize_resource 后 - 一切正常,但我需要访问控制。

知道如何解决这个问题吗?

0 投票
5 回答
3855 浏览

ruby-on-rails - 在测试控制器时保持干燥,通过 CanCan 授权

我正在使用 RSpec 为 Rails 项目追溯编写一些测试。

我正在使用 CanCan gem 来提供授权。我决定编写一个规范来测试ability.rb模型。然后我继续测试我剩下的模型。

我已经转向控制器,但我遇到了一个巨大的障碍:我正在重新测试我的能力!

基本上,我必须剔除一系列模型,并剔除它们的关联;否则响应只会返回403 Forbidden
这样做的原因是,控制器基本上负责担心授权。

我不太确定从这里去哪里。我最多删除 6 个模型,只是为了编写一个测试。我知道能力是有用的,这就是ability_spec.rb它的用途。

所以这个问题真的是2倍的:

  1. 我应该单独测试能力模型吗?
  2. 控制器测试是否应该关注适当的权限?

Edit require 'spec_helper' include Devise::TestHelpers # 让您的规范访问助手

谢谢,
罗比

0 投票
1 回答
308 浏览

ruby-on-rails - 如何在 RoR3 中制作自定义授权 rools

有一些非常好的授权 gem,比如 cancan 和 declarative_authorization。但这里有一个问题:授权规则在类中是分开的,但我需要将它们放在表中,或者可能是一些 yaml 配置文件,以便最终在管理面板中更改它们。完美,如果我可以在管理面板中更改用户组和单个用户的权限。有什么解决办法吗?