gpt4 book ai didi

ruby-on-rails - 使用服务对象的 Pundit 授权

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:43 25 4
gpt4 key购买 nike

工具

  1. Pundit授权;试验 this pull request链接到官方 Pundit 自述文件;
  2. ActiveInteraction域服务对象(“DSO”);
  3. RSpec 2.99.1

** 项目**

项目仓库在 Github 上;这里正在审查的是 pundit-1 branch .

我遵循了 Pundit 教程并获得了使用“传统”胖 Controller 工作的授权;看

到目前为止一切都很好。然后我们来到 SessionController,它的 #new#destroy 操作分别控制登录和注销。

current codespec使用传统的 Controller 逻辑工作得很好(查看 #new 如何调用 private methods 使用 Pundit 授权事件(当前)用户使用 SessionDataPolicy

然后我尝试将该逻辑封装在 ActiveInteraction DSO 中(请参阅 SessionsController#new 中的 commented-out code),一切都变得一团糟。

更具体地说,SessionsController 规范的版本 in this Gist在规范调用 #new 方法时引发 Pundit::AuthorizationNotPerformedError

威士忌。探戈。狐狸?!?!?

有没有任何人能够让类似的代码工作而无需 Pundit 直接生活在 Controller 代码中,最好使用@billychan's pull request (将不胜感激更好的替代方案)?

这让我完全不知所措。

最佳答案

Pundit::AuthorizationNotPerformedError 是由于 #verify_authorized 方法引发的,该方法基本上是在检查 @_pundit_policy_authorized 变量。

您可以为不需要的 Controller 关闭验证。

更新。并再次发布。我需要更加注意日期:\

关于ruby-on-rails - 使用服务对象的 Pundit 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24880934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com