我有一个使用Devise,CanCan和Rolify来处理身份验证和授权的应用。但我认为我并没有充分利用这些宝石。现在我能力课中唯一的事情就是:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.has_role? :admin
can :manage, :all
else
can :read, :all
end
end
end
我找到了一个安全漏洞,经过身份验证的用户可以查看其他用户个人资料。我通过更改用户控制器中的一些代码来修复它。
def show
@user = current_user.has_role?(:admin) ? User.find(params[:id]) : current_user
end
这是处理这个洞的最佳方法吗?是否有最佳实践或轨道约定以不同的方式解决这个问题?