问题标签 [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 投票
1 回答
4802 浏览

ruby-on-rails - 灿灿宝石 | 不能:索引,用户

非常基本的用户模型,我希望管理员用户:manage all

否则不能:索引,用户和其他一些选项,但是当我尝试阻止非管理员用户查看用户索引时,管理员用户也无权访问。

这是我的能力.rb

我可以做些什么来阻止所有用户被用户索引阻止?

问候

0 投票
2 回答
4020 浏览

ruby-on-rails - 我是否应该使用 CanCan 跳过实例化资源的操作的授权?

我正在编写一个网络应用程序来从更大、完整的卡片组中随机选择卡片列表。我有一个 Card 模型和一个 CardSet 模型。两种模型都有完整的 RESTful 集 7 个操作(:index、:new、:show 等)。CardSetsController 有一个用于创建随机集的额外操作::random.

我添加了用于身份验证的设计和用于授权的 CanCan。我有具有“编辑”角色的用户。允许编辑器创建新的 CardSet。来宾用户(未登录的用户)只能使用:index:show操作。这些授权按设计工作。编辑器目前可以毫无问题地同时使用:random和动作。:new正如预期的那样,来宾用户不能。

我想允许来宾用户使用该:random操作,但不允许该:new操作。换句话说,他们可以看到新的随机集,但不能保存它们。操作视图上的“保存”按钮对:random来宾用户隐藏(按设计)。问题是,该:random操作所做的第一件事是构建 CardSet 模型的新实例来填充视图。当 cancan 尝试load_and_authorize_resource一个新的 CardSet 时,它会抛出一个 CanCan::AccessDenied 异常。因此,视图永远不会加载,并且会为来宾用户提供“您需要先登录或注册才能继续”消息。

我意识到我可以通过传递给呼叫来告诉我load_and_authorize_resource跳过该:random动作,但出于某种原因:except => :random,这只是感觉“错误” 。

这样做的“正确”方法是什么?我应该在不实例化新 CardSet 的情况下创建新的随机集吗?我应该继续添加例外吗?

更新

我没有在上面包括我的能力课程。我已对其进行了更新以包含 ':random' 操作,但它仍然无法正常工作。

0 投票
1 回答
349 浏览

ruby-on-rails - 在 Rails 中具有多个用户身份验证的一个帐户

对于以下问题,您会推荐哪种方法:我的应用程序需要一个帐户,多个用户在同一个帐户上输入任务。只有其中一位用户(打开帐户的用户)将拥有管理员权限。

我正在考虑使用 Authlogic 进行身份验证,使用 CanCan 来确定用户权限。关键是我希望打开帐户的用户默认是管理员,他是唯一能够为他的帐户生成具有不同权限的其他用户的用户。

0 投票
1 回答
1176 浏览

ruby-on-rails-3 - Devise DoubleRenderError

Application-Stack: Rails3, CanCan, Devise, Shoulda

I've got some nested Resources and want to test them with Shoulda and i get the following DoubleRenderError:

The test is going to check whether a non authenticated user is able to access the nested resource ( he shouldn't )

TestMethod

ControllerMethod:

All tests with an authenticated user work fine - may someone can give me a hint. Thanks a lot! Ben

0 投票
2 回答
1278 浏览

ruby-on-rails - 不同用户角色的不同视图集

我正在开发一个 Rails 应用程序,我有2 个不同的用户角色:高级和基本。

而不是隐藏基本用户视图中的链接(使用 CanCan 的ai)我想管理两组不同的视图:一个用于高级用户,一个用于基本用户。

目前我正在以这种方式工作:

但我不喜欢在每个操作中为基本用户指定模板({ render :template => "devices/index_basc.html.erb" })我认为还有其他方式(我希望更简洁:)

你有什么想法 ?

谢谢你,亚历山德罗

0 投票
1 回答
199 浏览

ruby-on-rails - CanCan的一些问题

(对不起我的英语不好 ;)

我开始使用 rbates 的 CanCan,这是一个很棒的宝石,但我有一些问题:我有 Scrap 模型并且有布尔字段 :published (所以,这意味着已发布/未发布(草稿))。

我的ability.rb中有这个规则:

因此,非作者无法编辑/更新/删除此对象。我想对我的“展示”动作做同样的事情(非作者无法阅读草稿,真的吗?;)这样做的真正方法是什么?

谢谢大家!安德烈·奥格涅夫斯基

0 投票
1 回答
11970 浏览

ruby-on-rails - 从模型中访问 CanCan 的 `can?` 方法

您可以current_user使用以下方式从视图或控制器获取 ' 权限can?

如何使用以下语法从模型访问此功能:

0 投票
2 回答
745 浏览

ruby-on-rails - 使用 CanCan 附加地定义权限

我的应用程序有 2 个角色:编辑者和管理员。我希望编辑拥有一些权限,而管理员拥有所有编辑权限以及其他一些权限。

这是我的摘录ability.rb

由于所有管理员也是 editors,我希望这将定义这些权限:

  • 管理员可以阅读和编辑所有帖子
  • 编辑可以阅读所有帖子,但只能修改他们创建的帖子

但是,CanCan 似乎没有附加地定义权限——即,当 CanCan 看到用户是编辑者(即使用户也是管理员)时,它会应用更严格的权限(即,can :edit, Post, :created_by_id => user.id而不是can :edit, Post)。

有没有办法解决?显而易见的解决方案需要重复代码:

0 投票
1 回答
856 浏览

ruby-on-rails - 通过模型关联验证用户使用 CanCan 的能力

我有一个看起来像这样的 TakeAction 模型:

和一个看起来像这样的 TakeActionNote 模型:

使用 CanCan,我试图允许拥有 take_action 的用户创建和销毁(管理)笔记。

我试过用这样的方块来定义能力。

我可以毫无问题地向 take_action 添加注释,但是当我尝试销毁它时,我得到:

采取行动 notesController#33 中的 NoMethodError 未定义方法 `take_action' for nil:NilClass

我有什么遗漏或做错了吗?任何帮助表示赞赏。谢谢!

0 投票
1 回答
6933 浏览

ruby-on-rails - CanCan 的 access_by(获取记录)中的 current_ability 是什么?

在 CanCan 的文档中,它显示了如何以这种方式获取所有可访问的记录:

但什么是current_ability?我尝试传递用于身份验证和授权的当前用户,但出现此错误:

有什么想法我应该传递给accessible_by什么或这里有什么问题?