Rails 基于关联的 cancan 授权被拒绝
Rails cancan authorization based on association being denied
我的 ability.rb
文件中有以下代码段:
def initialize(user)
if user.group === 1
can :manage, Task do |task|
task.user.id === user.id
end
end
end
用户has_many
个任务,每个任务belongs_to
一个用户。被请求的任务记录 (7) 的 user_id
为 4。发送请求的用户的 user_id
为 4。
在 tasks show 方法中,我有这个片段来授权和 return 数据:
def show
@task = Task.find(params[:id])
authorize! :read, @current_user
render json: @task, root: "task"
end
为什么会被拒绝?
您需要授权任务,而不是current_user。假定 current_user:
def show
@task = Task.find(params[:id])
authorize! :read, @task
render json: @task, root: "task"
end
在你的能力文件中你可以这样写:
def initialize(user)
can :manage, Task do |task|
task.user.id == user.id && user.group == 1
end
end
我的 ability.rb
文件中有以下代码段:
def initialize(user)
if user.group === 1
can :manage, Task do |task|
task.user.id === user.id
end
end
end
用户has_many
个任务,每个任务belongs_to
一个用户。被请求的任务记录 (7) 的 user_id
为 4。发送请求的用户的 user_id
为 4。
在 tasks show 方法中,我有这个片段来授权和 return 数据:
def show
@task = Task.find(params[:id])
authorize! :read, @current_user
render json: @task, root: "task"
end
为什么会被拒绝?
您需要授权任务,而不是current_user。假定 current_user:
def show
@task = Task.find(params[:id])
authorize! :read, @task
render json: @task, root: "task"
end
在你的能力文件中你可以这样写:
def initialize(user)
can :manage, Task do |task|
task.user.id == user.id && user.group == 1
end
end