[英]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.