使用服务对象的权威授权

Jef*_*key 13 ruby authorization rspec ruby-on-rails pundit

工具

  1. 权威授权; 尝试从官方Pundit README链接的拉取请求 ;
  2. ActiveInteraction域服务对象("DSO");
  3. RSpec 2.99.1

**该项目**

项目回购在Github上; 这里正在审查的是pundit-1分支机构.

我遵循了Pundit教程并使用"传统"胖乎乎的控制器获得了授权; 看到

到目前为止一切顺利.然后我们来到SessionController,其中#new#destroy行动分别管理登录和退出..

当前的代码规范工作得很好用传统的上下的控制器逻辑(见如何#new调用私有方法使用权威人士使用授权活动(当前)用户SessionDataPolicy.

然后我试着来封装内的逻辑ActiveInteraction DSO(见注释掉的代码SessionsController#new),和所有的地狱破散.

更具体地说,此Gist中的SessionsController规范版本在规范调用方法时引发了一个版本.Pundit::AuthorizationNotPerformedError#new

威士忌酒.探戈.狐狸?!?!?

有没有能够在没有 Pundit直接在控制器代码中生活的情况下使用类似的代码,理想情况下使用@ billychan的pull请求(更好的替代方案将非常感激)?

这让我完全陷入困境.

Jas*_*der 0

您可以在 DSO 级别创建 HeadLess 策略,例如

Struct.new(:user)
Run Code Online (Sandbox Code Playgroud)

然后验证用户的方法授权。