问题标签 [cancancan]
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 gem: Cancan on production is not working
I'm using cancancan.. and it works fine on development env .. but once i got it on the production the site works like if there's no gem installed at all.. no authorization handled.
I can't figure out what is wrong
--------------------edited in the application controller there's
and in the ability file
ruby-on-rails - 将 Rails 应用程序部署到 Heroku 无法正常工作
我已经在 Nitrous.io 上使用 Active Admin 创建了一个 rails 应用程序,并且一切都在该开发环境中工作。我正在使用 Devise/CanCanCan 进行身份验证/授权
当我推送到 heroku 并尝试访问 Active Admin 时,我收到以下错误:
我的用户模型是这样的:
能力.rb
我究竟做错了什么?
我试过多次重启heroku服务器。
谢谢你们的帮助。
干杯!
ruby-on-rails - Devise + Cancan 在生产中导致重定向循环,但在开发中不会
我已经让 Devise 在我的 rails4 应用程序中工作了很长一段时间。现在我需要添加不同的角色决定使用 Cancan 来完成此任务。
在开发中一切都运行良好,但是当我将代码部署到生产环境时,我得到的只是无限重定向循环。如果我删除 cookie,我可以获得登录页面,但登录会在同一个循环中结束。
我的根重定向到控制器索引操作。
我基本上只有一个具有任何业务逻辑的控制器,并且我的根重定向到该控制器中的索引操作。
来自控制器的相关线路。
但我也试过这个:
此外,之前还附加了这两个(分别)
在 ApplicationController 我将所有这些都放在一起并分开
这两个我都试过了,除非声明。
我尝试按照相关的 wiki 进行操作,但似乎无法使其在生产中发挥作用。如果这有什么不同,我将在生产中使用 Nginx/Passenger 组合。
在写这篇文章时,我意识到我一直在使用 Cancan 1.6,但我还没有尝试过 Cancancan。接下来会试一试。
所有的帮助都会得到重视。
更新:我用 Cancancan 1.9.2(而不是 Cancan 1.6)尝试了这个,结果相似。在找到解决方案或替代授权宝石之前,我暂时禁用了它。
ruby-on-rails - Rails CanCan条件哈希访问被拒绝
我在设置如下所示的能力时遇到问题:
问题是
即使返回 false
按预期只返回该用户的项目。
我已经使用 ruby 1.9.3-p547 在 rails 3.2.19 上尝试了 cancan 1.6.10 和 cancancan 1.9.2
这是cancancan还是我的代码的错误?我如何找出为什么 ability.can?(:read, my_project) 失败了?
ruby-on-rails - 使用 CanCan 的不同重定向
我使用 CanCan 来运行 SaaS 应用程序进行授权(实际上是维护更频繁的 CanCanCan gem),并且我希望能够区分不同的“类型”权限。
例如,如果一个普通用户访问/adminpanel
,那应该以重定向/
和错误闪烁结束。但如果普通用户访问/paid_feature
,我想将他们重定向到/payments/paid_feature/new
. 这是给我带来困难的第二个。
显然我可以告诉 CanCan 让所有用户访问paid_feature
in ability.rb
,然后在paid_feature 控制器中确认他们已经付款(并在必要时重定向)。但这似乎不干净。这是一个授权问题,所以我希望它出现在我的ability.rb
. 有谁知道我该怎么做?
ruby-on-rails - ActiveAdmin + CanCanCan 错误:受保护的方法“授权!” 要求
我在让 ActiveAdmin 与 CanCanCan 一起工作时遇到了一些麻烦。我在 Rails 4 应用程序中使用 CanCanCan 版本 1.9.2 和 ActiveAdmin 版本 1.0.0.pre。load_and_authorize_resource
在我的应用程序的其余部分通过添加和添加到我的 ApplicationController设置我的能力类并启用授权检查后check_authorization
,我收到错误
protected method 'authorize!' called for #<Activeadmin::<SomeControler>> (NoMethodError)
经过一番搜索,我遇到了这个GitHub 问题,看起来与我遇到的问题一模一样。但是,该解决方案对我根本不起作用。在 config/initializers/active_admin.rb 我有,除其他外:
...
config.authorization_adapter = ActiveAdmin::CanCanAdapter
...
我还确保我在任何 ActiveAdmin 控制器中都没有引用,但是当我尝试从我的集成测试访问任何 ActiveAdmin 资源时controller.authorize_resource
,我仍然得到错误。protected method authorize! ...
经过更多的尝试和错误以及更多的搜索,我发现load_and_authorize_resource
不建议从 ApplicationController 调用,并且像我上面所做的那样将 ActiveAdmin 的 authorization_adapter 设置为 CanCanAdapter 应该会自动在 ActiveAdmin 中启用 CanCanCan 的授权检查,但check_authorization
由于资源未被授权而失败ActiveAdmin 控制器何时load_and_authorize_resource
从 ApplicationController 中删除。
那么,为我的 ActiveAdmin 控制器启用 CanCanCan 授权检查的正确方法是什么?我应该如何集成 CanCanCan 和 ActiveAdmin 以便非管理员用户无法访问任何 ActiveAdmin 资源?
我还将这个问题发布到 ActiveAdmin 邮件列表,但没有得到任何回复。任何帮助将不胜感激。
ruby-on-rails - Rails - ActionController::RoutingError (没有路线匹配 [GET] "/generic.png"):
我最近更新了我的 gemfile,并注意到服务器在我的开发环境中记录了以下内容 - ActionController::RoutingError (No route matches [GET] "/generic.png")
在生产(Heroku) - 我得到以下 -
有没有其他人遇到过这个?它不会破坏应用程序,但对我来说是个谜。
我正在使用设计和康康康。我已经对我的代码进行了搜索,我可以看到的唯一提到 generic.png 的地方是在日志中,这让我觉得它被埋在了宝石的某个地方。
ruby-on-rails - 将 CanCan 与枚举一起使用时会出现问题吗?和accessible_by()
我正在尝试使用 CanCan 来限制我网站上的评论可见性。在我的评论模型中定义了一个枚举:
这是我当前的ability.rb 文件的摘录:
起初我只是在使用:
但即使这在获取记录时有效:
对这样的对象检查权限时它不起作用:
因为那时@a_comment.access_right ==“每个人”(而不是2)
所以我上网查了一下,发现这个:CanCanCommunity issue 102。建议的解决方案对我不起作用,因为像这样直接使用“每个人”:
会给出不正确的结果。获取记录时它背后的 sql 查询如下所示:
在这种情况下,“每个人”似乎都被转换为整数 (0)。
然后我找到了一个解决方法,我当前的能力文件,这要归功于符号 (:everyone)。但是当使用罐头时,事情将不再起作用?:read, @a_comment (使用accessible_by时sql是正确的)
有谁知道如何纠正这个问题?
如何定义基于枚举的能力,这些能力既可以在获取记录时进行验证,也可以通过 can 进行验证?
谢谢!
编辑:它可能与此CanCanCommunity 问题 65有关,但我无法使其工作。
ruby-on-rails-4 - 如何将特定范围仅限于具有特定角色的用户?
所以我有一个Post
模型。我的posts
可以发布或未发布。我正在使用 Rolify、CanCanCan 和 Devise。
我想要发生的是我的:admin
用户,应该能够查看Post#Show
所有帖子的操作,但我:member
或guest
用户(即未登录)应该只能看到Post.published
帖子。
我的ability.rb
样子是这样的:
我试过这样做,对于:member
和Guest
,但它在我的页面上给了我一个无限的重定向循环Post#Index
- 这是我的root_path
:
WherePost.published
返回所有带有publication_status = "published"
.
这就是我在我的Post.rb
:
我如何实现这一目标?
ruby-on-rails - 如何让 && 的 if 语句正常工作?
我认为这是:
这将返回此错误:
我也试过这个:
虽然我没有收到上述错误,但它根本不起作用......即 non-signed-in-user
可以访问该if
块中的内容。