1

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

これは、この穴に対処する最善の方法ですか? これに別の方法で対処するベストプラクティスまたはレール規則はありますか?

4

1 に答える 1

2

ドキュメントから

can :read, ModelName, :user_id => user.id
于 2012-09-30T18:00:04.280 に答える