繁体   English   中英

使用带有Rolify / Devise的Authorize ruby​​ gem定义类级别的授权者

[英]Defining class level Authorizers using Authorize ruby gem with Rolify/Devise

因此,将以下内容放在我的产品控制器的顶部:

  authorize_actions_for(Product)

...这是我Product.rb的顶部:

  resourcify
  include Authority::Abilities

...这是我的User.rb的顶部

  rolify
  include Authority::UserAbilities

我能够从application_authorizer.rb中遵循以下规则:

def self.default(adjective, user)
  user.has_role? :admin
end

换句话说,只有管理员用户才能以任何方式参与产品。

但是,当我创建如下的product_authorizer.rb时

class ProductAuthorizer < ApplicationAuthorizer
  def self.creatable_by?(user)
    user.has_role? :admin
  end

  def self.updatable_by?(user)
    user.has_role? :admin
  end

  def self.deletable_by?(user)
    user.has_role? :admin
  end
end

我没有看到遵守规则。 我看到非管理员用户仍然无法访问产品的show操作。 鉴于以上情况,这不应该被允许吗?

我尝试将其添加到Product.rb:

self.authorizer_name = 'StyleAuthorizer'

我也尝试注释掉app_app.rb中的主要规则

#def self.default(adjective, user)
# user.has_role? :admin
#end

...但仍然没有荣耀

授权源代码中最基本的default始终返回false。 因此,除非您以一种可self.readable方式明确授权非管理员,否则他们将无法访问显示页面。

删除product_authorizer.rb文件中的其他方法(它们不是必需的),并替换为

def self.readable_by?(user)
  true
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM