问题标签 [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 - 在 Pundit 中实施范围
我正在使用 Pundit gem(使用 Devise 和 Rolify)来限制对基于登录用户角色的信息的访问。
目前,我为我的用户模型定义了三个角色:管理员、客户管理员和客户管理员。
一个用户属于一个客户。客户 has_many 用户。
在索引Customer 模型时,我已成功实施 Pundit 策略。管理员和客户管理员可以查看所有客户。客户管理员只能看到他们自己的记录。
问题出在我试图限制Customer 控制器的show方法时。管理员和客户管理员可以查看所有客户。但是,客户管理员应该只能看到他自己的记录。 但就目前而言,客户管理员可以在 URL 中输入任何 id 并查看任何客户记录。
我对范围很模糊。据我了解,策略方法(即索引?和显示?)是限制谁可以执行这些操作,而范围方法限制可以获取哪些记录。我无法为上述场景构建正确的范围。
这是客户控制器:
这是客户政策:
成功!!感谢 railscard 给我的先机,诀窍是修改节目?客户策略文件中的方法,如下所示:
请注意,我必须使用@record 实例变量,因为这是应用程序策略类用来引用授权方法传入的记录的原因。
谢谢!!
ruby-on-rails-4 - 具有命名空间的权威政策
我的应用程序中有问题模型。
应用程序/模型/question.rb
我正在使用“权威”宝石进行授权。有两个控制器可以对问题进行一些更改:一个用于注册用户,一个用于管理员。
我正在尝试为控制器创建单独的策略。
应用程序/控制器/questions_controller.rb
应用/政策/question_policy.rb
应用程序/控制器/管理员/questions_controller.rb
app/policies/admin/question_policy.rb
当我尝试在 Admin::QuestionsController 中使用“授权”方法时,它使用 app/policies/question_policy.rb 类而不是来自管理文件夹。
Gem 的文档说这应该像我上面描述的那样工作(https://github.com/elabs/pundit#namespaced-policies)。
有人可以帮我吗?
ruby-on-rails - 使用服务对象的权威人士授权
工具
- 权威人士授权;尝试与官方 Pundit README 链接的这个拉取请求;
- ActiveInteraction域服务对象(“DSO”);
- RSpec 2.99.1
** 该项目**
项目 repo 在 Github;这里要审查的是在pundit-1
树枝上。
我遵循 Pundit 教程并使用“传统”胖乎乎的控制器获得授权;看
到目前为止一切都很好。然后我们来到SessionController
,其#new
和#destroy
动作分别控制登录和注销..
当前代码和规范使用传统的控制器逻辑工作得很好(请参阅如何#new
调用使用 Pundit 的私有方法SessionDataPolicy
来使用.
然后我尝试将该逻辑封装在ActiveInteraction DSO中(请参阅 中注释掉的代码SessionsController#new
),然后一切都变得松散了。
更具体地说,这个 GistSessionsController
中的规范版本在规范调用方法的地方提出了 a 。Pundit::AuthorizationNotPerformedError
#new
威士忌酒。探戈。狐狸?!?!?
有没有人能够在没有Pundit 直接居住在控制器代码中的情况下获得类似的代码,最好使用@billychan 的拉取请求(更好的替代品将不胜感激)?
这让我完全摸不着头脑。
ruby - 在 Rails 4 中将用户名登录添加到设计 - 创建用户时出错
遵循本指南后登录工作正常:允许用户使用他们的用户名或电子邮件地址登录
但是,创建新用户不再起作用。这就是我得到的:
我不知道为什么它不起作用。以下是设计中涉及的一些代码:
用户控制器.rb:
用户.rb:
我相信错误来自这种find_for_database_authentication
方法
任何帮助是极大的赞赏。谢谢!
ruby-on-rails - 参数丢失或创建时值为空
我在用户和订阅模型之间有一对一的关系,使用 Stripe 进行支付,设计用户身份验证和 Pundit 角色。
当我从我的创建操作创建我的订阅模型时,我收到param is missing or the value is empty
错误,因为我的表单没有传递 @subscription 对象。为什么我的@subscription 没有通过参数传递?
这是我的 SubscriptionsContrller 代码:
这是订阅模型:
以下是中的表单代码new.html.erb
:
最后,这是我的请求参数
ruby-on-rails - 权威人士无头政策
我在我的应用程序的管理部分使用权威人士进行访问控制。我有一个仪表板控制器,如下所示:
和一个看起来像这样的政策:
当我尝试访问时,/admin/dashboards/
我得到一个Pundit::NotDefinedError, unable to find policy SymbolPolicy for dashboards
我也尝试过命名策略并得到同样的错误。
ruby-on-rails - 使用 Pundit 策略防止 ActiveAdmin 登录
我有 ActiveAdmin 和 Pundit 设置和工作。我的用户模型有一个角色属性(rails 4.1 枚举)。如何只允许具有 admin 角色的用户登录 /admin?
ruby-on-rails - Rails Gem Pundit isn't blocking users properly
The current user i'm on isn't an admin, however when I hit the new action of the posts controller, I'm able to see it. Why is this? How do I use pundit properly?
From the rails console: 2.1.2 :011 > u.admin? => false
post_policy.rb:
end
posts_controller.rb:
posts/show.html.erb:
standard file printing out the contents of the post.
ruby-on-rails - Rails 4 将 cancancan 迁移到 pundit
我正在尝试迁移到 Pundit,但遇到了一些麻烦。
我有一个用户模型和一个照片模型。
用户有很多照片,照片是用户的嵌套资源。在我的控制器中,我做
在我的康康舞能力课上,我有
在一个视图中我会使用
有人知道如何使用 Pundit 正确执行此操作吗?
先感谢您
ruby-on-rails-4 - 设计“授权用户”导致未定义的方法
我从 RailsApps.org 的 Rails 4.1 Pundit / Devise 应用程序开始,并在用户控制器中调用“授权用户”时继续出现未定义的方法错误。用户可以注册、登录和编辑他们的帐户信息。单击“用户”链接时,会出现以下结果:
用户控制器中的 NoMethodError#index
未定义的方法“授权”#
这是用户控制器...
和ApplicationController
:
关于如何解决这个问题的任何想法?
提前致谢!
评论:这是来自 RailsApp Pundit 快速入门指南来解释授权
关键字 authorize 是一个辅助方法,它为实现实际授权的较长语句提供了快捷方式。我们从来没有看到完整的语句,因为我们使用了 helper 方法,但如果我们使用它,它看起来像这样:
引发“未授权”,除非 UserPolicy.new(current_user, User).index?
授权助手方法找到一个 UserPolicy 类并实例化它,传递 current_user 对象和 User 类或 User 模型的实例,然后调用索引?方法返回真或假。您可能想知道为什么我们可以提供 User 类(如在 index 操作中)或 @user 实例变量(如在 show 操作中)。
当从控制器操作调用授权时,Pundit 会查找策略对象。我们已经看到,如果给定以下任何参数,Pundit 将找到 UserPolicy:
授权用户 - 用户类
authorize @user – 一个实例变量,它是 User 类的一个实例
授权用户——一个简单的变量,它是用户类的一个实例
授权 @users – 一组用户对象
对我来说,似乎有时会在显示和更新中找到辅助方法,但在索引中却没有。