嗨,我是 Rails 新手,我想弄清楚如何防止未经授权访问控制器的更新操作。
我知道我可以有一个 before_filer 来踢出没有登录的人redirect_to
,edit
但我想要一种方法来阻止用户编辑不属于他们的对象。
例如:授权用户可以简单地更改job
我的应用程序中的对象,方法是直接发送PUT
带有 anyjob.id
作为参数的请求并更改他们想要的任何字段。
这是我的控制器:
def update
@job = Job.find(params[:id])
@job.update_attributes(params[:job])
redirect_to jobs_path
end
为了尝试解决这个问题,我尝试检查update
用户是否被授权的操作,如果他们没有被授权,我会将他们重定向到索引页面。
def update
@job = Job.find(params[:id])
if @job.user.id != current_login
redirect_to jobs_path
end
@job.update_attributes(params[:job])
redirect_to jobs_path
end
但是当我尝试这样做时,rails 给了我一个错误,说我在一个动作中只能有一个重定向。