问题标签 [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 回答
209 浏览

ruby-on-rails - 发布操作需要Rails授权吗?

我有一个我正在用带有 cancan 和设计的 rails 3 编写的应用程序。我很好奇从安全的角度来看,授权控制器上的发布操作是否必要或有帮助?假设我的所有控制器操作都需要通过设计进行身份验证(即用户必须登录)。

我可以看到为什么我需要通过 cancan 对使用 GET 的控制器操作进行授权,因为用户可以简单地输入他们希望自由访问的 url,并且必须将其锁定。但是,对于帖子,用户必须从表单中发布数据,该表单可以防止使用令牌进行 xss 攻击。

在这种情况下,假设如果我使用 cancan 限制我视图中的按钮的可见性,用户将无法恶意提交表单,是否可以安全地假设?

非常感谢

编辑:

谢谢你们的快速回答。正如下面已经指出的那样,恶意用户可以使用诸如 firebug 之类的工具伪造表单帖子,因此需要授权。

使用 capybara / cucumber 模拟这种类型的交互(用户使用他们已经破解的表单发布到 url)的最佳方法是什么?

再次感谢。

0 投票
3 回答
30877 浏览

ruby-on-rails-3 - 如何创建第一个(管理员)用户(CanCan 和 Devise)?

我在托尼的教程中使用的 Rails 3 应用程序中进行了身份验证

我不想在我的应用程序上公开注册,只是为了使用管理员帐户创建新用户,但我无法手动创建管理员帐户,因为在表用户中有必须生成的加密密码和盐,而我没有不知道怎么做:|

0 投票
2 回答
635 浏览

ruby-on-rails - 用户的未定义方法“模型”

我在我的 Rails 3 应用程序中通过Tony 的教程第二个教程进行了身份验证。

但我明白了

用户的未定义方法“模型”

它只是从教程中复制/粘贴,我认为这是我的应用程序架构中的问题:)

当我尝试访问 /users/new 时出现错误

0 投票
5 回答
4683 浏览

ruby-on-rails - CanCan 中最安全和最可靠的方式来执行访客、用户、管理员权限

我对 rails (3) 比较陌生,并且正在使用 CanCan 构建一个应用程序,其中有 3 层用户。

  • 访客 - 未注册访客用户
  • 注册并登录访客
  • 管理员 - 使用管理员标志注册并登录的访客

我现在的能力很糟糕,从 cancan 文档中复制而来,基本上定义了访客角色和管理员角色

我正在寻找添加用户角色。由于我正在创建那个一次性用户模型,我考虑过使用 new_record?确定用户是否登录。就像是:

但是,就是感觉不对。似乎有点与实际登录无关,并且担心它是否真的安全。

寻找有关更优雅的方法的建议。

谢谢!

0 投票
3 回答
2606 浏览

ruby-on-rails - 设置 CanCan 能力.rs 模型

我用 Devise 和 CanCan 成功地制作了登录系统,我有 3 种类型的用户。管理员、内部和全球用户。我创建了控制器和索引操作:Admin、Cpanel、Report 和 State,并且我想限制某些用户对该控制器的访问。

管理员用户应具有访问权限:报告(全部)、状态(读取)、管理员(全部)

全局用户应具有访问权限:Reports(只读)、State(读取)、Cpanel(全部)

内部用户应具有访问权限:报告(全部)、状态(读取)

我尝试使用 ability.rs 中的以下代码来做到这一点

目前我在这个控制器中只有索引操作,当我使用内部用户登录到应用程序时,我可以访问 /admin 例如,这不是我想要的行为。我想限制对所有控制器的访问,而不是ability.rb 类中列出的控制器。

源代码在这里

0 投票
2 回答
1315 浏览

ruby-on-rails - 康康宝石简单的问题

模型/能力.rb

在 Railscasts 中有方法 user.role? :admin & if user.role?(:author).我不明白。我是否需要在模型中创建一个方法才能使其工作?

我将角色存储在用户表中作为角色列。

0 投票
2 回答
928 浏览

ruby-on-rails - 如何在 Rails 应用程序中使 current_user 始终不为零?

请给我关于一个小问题的任何想法:在我的 Rails 3 应用程序中,我需要current_user始终不是 nil。我正在将 Devise 和 CanCan 用于身份验证系统,并且正在考虑如何实现“来宾”用户。对于像“admin”这样的角色,它可以正常工作(如果 current_user.is? :admin),但如果用户没有登录,我希望检查 not user_signed_in?,但同样的方式(如果 current_user.is? :guest)例如。

我想我需要在 Application_Controller 的 before_filters 之前创建 current_user 对象 ib,但我不知道如何以正确的方式创建这个全局对象。

感谢您的任何回答!

0 投票
2 回答
1368 浏览

ruby-on-rails-3 - 我可以将 cancan 与许多资源一起使用吗?

我使用设计并创建了两个模型,医生和患者。当我写load_and_authorize_resourcecancan时给出了一个例外

我怎样才能对他们两个都使用cancan?

0 投票
1 回答
341 浏览

ruby-on-rails - 访问级别/安全角色设计选择:单个角色或继承

请考虑这种情况:具有 4 个访问级别的 Web 应用程序:管理员 > 经理 > 代表 > 客户 > 无角色(公共访问页面)

使用我当前的应用程序设置,我可以通过 2 种方式允许访问:

  1. 我可以编写代码,假设角色优先,即如果用户是经理 - 应用程序将自动假设他/她有权访问客户和代表可以访问的区域,但不是管理员。

  2. 我可以在表格中单独分配每个角色。例如,一个用户将有 3 个角色分配给他们。所以应用程序不会承担角色优先/继承。我可以让管理员为用户分配角色,或者修改一些代码,如果授予更高的访问级别,这些代码将自动为用户分配额外的角色。

从可维护性的角度来看,这两种方法中哪一种更好?

附言

我认为这并不重要,但我将 Rails 3 与 CanCan & Devise 一起使用。我对角色和用户之间关系的设置如下:

角色 <=> (HABTM) <=> 用户

0 投票
1 回答
6586 浏览

ruby-on-rails - CanCan :read 和 [:index, :show] 之间的区别?

根据所有文档,该:read操作被别名为:index:show

但是,请考虑以下具有嵌套资源的场景:

如果我这样定义能力:

事情按预期工作。但是,如果我将:read操作更改为 [:index, :show]:

我未经授权访问/posts/:post_id/comments,/posts/:post_id/comments/:id等。但是,我仍然可以同时访问:index:showposts_controller

如果它们的行为不同,这些动作怎么可能被“混淆”?

在我的摆弄中,我还遇到了以下情况。更改load_and_authorize_resource为以下允许的访问权限:

有人可以解释这里发生了什么吗?