问题标签 [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.
ruby-on-rails - 发布操作需要Rails授权吗?
我有一个我正在用带有 cancan 和设计的 rails 3 编写的应用程序。我很好奇从安全的角度来看,授权控制器上的发布操作是否必要或有帮助?假设我的所有控制器操作都需要通过设计进行身份验证(即用户必须登录)。
我可以看到为什么我需要通过 cancan 对使用 GET 的控制器操作进行授权,因为用户可以简单地输入他们希望自由访问的 url,并且必须将其锁定。但是,对于帖子,用户必须从表单中发布数据,该表单可以防止使用令牌进行 xss 攻击。
在这种情况下,假设如果我使用 cancan 限制我视图中的按钮的可见性,用户将无法恶意提交表单,是否可以安全地假设?
非常感谢
编辑:
谢谢你们的快速回答。正如下面已经指出的那样,恶意用户可以使用诸如 firebug 之类的工具伪造表单帖子,因此需要授权。
使用 capybara / cucumber 模拟这种类型的交互(用户使用他们已经破解的表单发布到 url)的最佳方法是什么?
再次感谢。
ruby-on-rails-3 - 如何创建第一个(管理员)用户(CanCan 和 Devise)?
我在托尼的教程中使用的 Rails 3 应用程序中进行了身份验证
我不想在我的应用程序上公开注册,只是为了使用管理员帐户创建新用户,但我无法手动创建管理员帐户,因为在表用户中有必须生成的加密密码和盐,而我没有不知道怎么做:|
ruby-on-rails - CanCan 中最安全和最可靠的方式来执行访客、用户、管理员权限
我对 rails (3) 比较陌生,并且正在使用 CanCan 构建一个应用程序,其中有 3 层用户。
- 访客 - 未注册访客用户
- 注册并登录访客
- 管理员 - 使用管理员标志注册并登录的访客
我现在的能力很糟糕,从 cancan 文档中复制而来,基本上定义了访客角色和管理员角色
我正在寻找添加用户角色。由于我正在创建那个一次性用户模型,我考虑过使用 new_record?确定用户是否登录。就像是:
但是,就是感觉不对。似乎有点与实际登录无关,并且担心它是否真的安全。
寻找有关更优雅的方法的建议。
谢谢!
ruby-on-rails - 设置 CanCan 能力.rs 模型
我用 Devise 和 CanCan 成功地制作了登录系统,我有 3 种类型的用户。管理员、内部和全球用户。我创建了控制器和索引操作:Admin、Cpanel、Report 和 State,并且我想限制某些用户对该控制器的访问。
管理员用户应具有访问权限:报告(全部)、状态(读取)、管理员(全部)
全局用户应具有访问权限:Reports(只读)、State(读取)、Cpanel(全部)
内部用户应具有访问权限:报告(全部)、状态(读取)
我尝试使用 ability.rs 中的以下代码来做到这一点:
目前我在这个控制器中只有索引操作,当我使用内部用户登录到应用程序时,我可以访问 /admin 例如,这不是我想要的行为。我想限制对所有控制器的访问,而不是ability.rb 类中列出的控制器。
ruby-on-rails - 康康宝石简单的问题
模型/能力.rb
在 Railscasts 中有方法 user.role? :admin & if user.role?(:author).我不明白。我是否需要在模型中创建一个方法才能使其工作?
我将角色存储在用户表中作为角色列。
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,但我不知道如何以正确的方式创建这个全局对象。
感谢您的任何回答!
ruby-on-rails-3 - 我可以将 cancan 与许多资源一起使用吗?
我使用设计并创建了两个模型,医生和患者。当我写load_and_authorize_resource
cancan时给出了一个例外
我怎样才能对他们两个都使用cancan?
ruby-on-rails - 访问级别/安全角色设计选择:单个角色或继承
请考虑这种情况:具有 4 个访问级别的 Web 应用程序:管理员 > 经理 > 代表 > 客户 > 无角色(公共访问页面)
使用我当前的应用程序设置,我可以通过 2 种方式允许访问:
我可以编写代码,假设角色优先,即如果用户是经理 - 应用程序将自动假设他/她有权访问客户和代表可以访问的区域,但不是管理员。
我可以在表格中单独分配每个角色。例如,一个用户将有 3 个角色分配给他们。所以应用程序不会承担角色优先/继承。我可以让管理员为用户分配角色,或者修改一些代码,如果授予更高的访问级别,这些代码将自动为用户分配额外的角色。
从可维护性的角度来看,这两种方法中哪一种更好?
附言
我认为这并不重要,但我将 Rails 3 与 CanCan & Devise 一起使用。我对角色和用户之间关系的设置如下:
角色 <=> (HABTM) <=> 用户
ruby-on-rails - CanCan :read 和 [:index, :show] 之间的区别?
根据所有文档,该:read
操作被别名为:index
和:show
:
但是,请考虑以下具有嵌套资源的场景:
如果我这样定义能力:
事情按预期工作。但是,如果我将:read
操作更改为 [:index, :show]:
我未经授权访问/posts/:post_id/comments
,/posts/:post_id/comments/:id
等。但是,我仍然可以同时访问:index
和:show
。posts_controller
如果它们的行为不同,这些动作怎么可能被“混淆”?
在我的摆弄中,我还遇到了以下情况。更改load_and_authorize_resource
为以下允许的访问权限:
有人可以解释这里发生了什么吗?