问题标签 [pundit]
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 - 如何解决我的后控制器中的“无方法错误”。设计、权威、博客应用程序
在尝试为我的练习应用程序设置策略时。我在我的帖子控制器中遇到了“无方法错误”。
如果我们在后控制器上归零,我的更新方法就是代码。
结尾
正如你所看到的,没有什么特别的。只是更新页面的 HTML 和 JSON 呈现。
authorize
代码指向 pundit 中查找访问策略的助手。
在我的 Admin.rb 模型中定义。
authorize
代码查找与方法名称对应的策略。它查看策略类并开始应用此处找到的业务规则。这就是问题开始的地方。
我去def update?
@admin.editor?
end
它说undefined method 'editor?' for #<Class:0x007ffb7fa4f6a0>
代码位于 Git 的策略分支上:https ://github.com/wmuengineer/portfolio/tree/policy
ruby-on-rails - Rails:从任何 ruby 类将内容记录到 rails 应用程序日志
我希望能够从 ruby 类将内容记录到 Rail 的应用程序日志中。
我希望logger.info "some stuff"
从 中的一个类做my_app/app/myClass.rb
,但它没有定义。当我logger
在我的控制器和其他地方使用它时,它可以工作。
我对 Rails / Ruby 有点陌生,我假设这仅仅是因为logger
该类不包含在 中myClass.rb
,但它自动包含在所有控制器、模型等中。
如何logger
在任意 ruby 类中包含该类,或者从 ruby 类登录到我的 rails 应用程序?
(为“Pundit”添加了标签,因为我特别在 Pundit 策略文件中使用记录器,但它只是一个 ruby 类:P)
ruby-on-rails - 用户模型错误 - Rails
以下是我的 user.rb:
我现在想要生成权威人士特定的东西,当我尝试这样做时,我收到以下错误消息:
通常,当我不使用 ActiveRecord 作为基础时会发生这种情况,但这里不是这种情况。有任何想法吗?
ruby-on-rails - 如何使用 Pundit 授权 ActiveAdmin 资源?
使用CanCan
,可以在全局(在)load_and_authorize_resource
中调用辅助方法。这将确保所有 ActiveAdmin 控制器操作也得到固有的授权。before_filter
application_controller
但是Pundit
,没有这样的load_and_authorize_resource
辅助方法。所有 Pundit 文档和教程都在讨论调用authorize
每个操作。我可以在每个动作中调用授权。但在 ActiveAdmin 中,默认情况下不会公开这些操作。我是否应该打开每个控制器中的每个操作,authorize
然后调用然后调用super
?
这似乎是错误的。那么,有人可以告诉我如何使用 Pundit 来授权 ActiveAdmin 中的操作吗?
更新:
我知道 Pundit 授权适配器。我正在使用 AA 的主分支,并且我已将 AA 配置为使用 Pundit 适配器,如此处所述。我的问题是:如何使用适配器?通过设置config.authorization_adapter = ActiveAdmin::PunditAdapter
,是否会自动调用 ActiveAdmin 中每个操作的授权?我不这么认为。
例如,在 CanCan 中,即使在设置之后config.authorization_adapter = ActiveAdmin::CanCanAdapter
,您仍然需要将其设置load_and_authorize_resource
为全局 before_filter 才能自动授权所有 AA 操作。
ruby-on-rails - rescue_from DeviseLdapAuthenticatable::LdapException 似乎不起作用
我已经设计并LdapAuthenticatable
配置为访问OpenLdap
服务器以验证用户身份。
它通常可以工作,但是当服务器关闭时,rescue_from
调用ApplicationController
似乎不起作用。
当我得到
Rails 通过以下方式提升到非托管页面:
Devise::SessionsController#create 中的 Errno::EHOSTUNREACH 没有到主机的路由 - “slackdap.nellinux.net”端口 389 的连接(2)
Rails.root:/home/archivi/home/src/ruby/rails/tests/rails
应用程序跟踪 | 框架跟踪 | 完整跟踪请求
参数:
{"utf8"=>"✓", "authenticity_token"=>"mdFadH/41En8CXizTIu086ouO4BNXrISCmcNLE86LFw=", "user"=>{"email"=>"foo.bar@example.net", "password"=>"[过滤]"}, "提交"=>"登录"}
在这里,我的应用程序控制器:
有什么建议吗?
谢谢
ruby-on-rails - 为什么 before_action :authorize 因“参数数量错误”而失败?
我已将 Pundit 与 Devise 一起设置为对我的应用程序进行授权。在我的一个控制器中,我有before_action :authorize
.
然后我有以下测试:
我收到错误:
登录助手相当简单:
更新: 堆栈跟踪:
ruby-on-rails - has_many 关系中的权威人士授权
我在执行权威人士授权的最后一步时遇到了一些麻烦......我有一个项目模型以及一个 project_policy,它授权应用程序中的哪些用户可以查看该项目并与之交互。但是,我的项目有几个组件 - 其中一个是在项目中访问的项目版本的索引(项目 has_many 版本)......所以我还需要能够限制用户访问这个版本列表。 ..以及默认的项目配置文件(如果用户不是所有者/管理员或合作者,我会限制)。但是,我目前有这些“版本”,它们是在他们自己的模型中设置的。
详细信息:目前,如果我不是管理员/所有者或合作者,当我尝试访问 url projects/20 时,限制会起作用(它会重定向我并说“你没有被授权”),但如果我导航到“项目” /20/versions' 或 'projects/20/versions/1' 或 'projects/20/versions/new' 它不会限制我。我需要为此创建一个新的 version_policy,还是我可以在 project_policy 中限制它,因为从技术上讲,这些版本是项目的一部分?& 我需要添加的代码是什么样的?
我的代码如下 - 在此先感谢您提供的所有帮助...
PROJECT_POLICY.RB
PROJECT.RB(项目模型)
PROJECTS_CONTROLLER.RB
路线.RB
非常感谢......让我知道我错过的任何其他内容是否会有所帮助。
ruby-on-rails - 如何使用 pundit 显示基于 auth 的特定参数?
假设我有一个User
具有 ausername
和 a的模型full_name
。我想渲染一个用户对象,Active Model Serializer
并且只根据它current_user
是 nil 还是登录来渲染特定的参数。由于我也在使用pundit
,我想知道是否有办法使用pundit
.
例如
用户是nil
用户是logged in
ruby-on-rails - Rails:使用专家定义策略,取决于用户访问的页面
我在两页中需要相同的部分导轨,显示帖子列表。第一个是新闻提要页面,第二个是“详细信息”页面。
在第一个中,用户不应该能够编辑,在第二个中他应该能够。
部分是这样的:
该政策是这样实施的:
但似乎我无法访问 method current_page?
。有没有办法从政策中知道我正在访问的实际页面是什么?
谢谢
ruby-on-rails - 基于每个客户的授权策略
我有一个 Rails 4 应用程序。我使用devise进行身份验证,使用oppro为我的 API 提供 oauth2。所有请求都通过权威政策授权,直到现在,这个设置完全没问题。
目前,我的授权始终基于每个用户完成。这是有道理的,因为通常每个请求都是代表特定用户完成的,该用户要么在会话中进行身份验证,要么提供 oauth-token。
新的挑战是:我有某些 API 消费者(从现在开始我称他们为设备),他们的请求不能被视为来自特定用户的请求。一种是可以与 API 交换信息的Asterisk Server,另一种是GPS Tracking Box,它不断将跟踪点推送到 API。
因此,我需要在每个设备的基础上授权某些 API 操作,这意味着不一定有current_user
可用的。但是没有current_user
搞砸我的授权概念。
我已经考虑了解决这个问题的几种方法:
- 为每个设备创建专用用户并授权他们执行特定操作
- 亲:不会搞砸我的授权计划
- 对比:意味着重新考虑
User
-Model,因为目前我只有需要姓名、生日、电子邮件等的“自然用户”
- 使用经过调整的授权方案创建专用控制器
- 亲:高灵活性
- 相反:
- 所需设备的身份验证
- 需要额外的 API 端点,感觉不是很干燥
我正在为这种情况寻找最佳实践方法。我相信这不是一个特别的问题,并且必须有很好的解决方案。