Board logo

标题: 如何简单快速的完成用户角色管理和权限控制(9)在 Ability.rb 中定义每种角色的权限 [打印本页]

作者: look_w    时间: 2018-11-21 20:32     标题: 如何简单快速的完成用户角色管理和权限控制(9)在 Ability.rb 中定义每种角色的权限

在 Ability.rb 中定义每种角色的权限cancan+rolify                对权限的控制是基于角色的,且是针对资源的访问进行控制,具有相同角色的用户就有相同的权限,这带给我们非常大的便利。对于资源的访问权限,又分为许多种,基础的针对 RESTful                method 有以下六种。
其他非 RESTful 的 method(比如:search)也可以列上去,但是需要逐条列出来。
如果上面的基础权限无法满足你,你也可以使用 alias_action 来自定义权限组合。
假设要定义名为 :modify的权限组合,包含 :update和 :destroy,代码如下:
alias_action :update, :destroy, :to => :modify
对于每种角色的权限,是在 Ability.rb 中进行定义的,定义方法非常简单,在 can 后面传入访问权限和指定资源即可,代码如下所示。
清单12. 在 Ability.rb 中定义每种角色的权限
1
class Ability




include CanCan::Ability
def initialize(user)
1
2
user ||= User.new
# 如果用户角色是 admin ,给完整权限,可操作所有资源




if user.has_role? :admin
1
2
3
  can :manage, :all
# 如果用户角色是 author ,可以对 Paper 进行 read, edit, update 操作
elsif user.has_role? :author




can :read, Paper
can :update, Paper
1
# 否则只能够对 Paper 进行 read 操作




else
can :read, Paper
end
end
end




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0