Rails url项目检查

时间:2015-12-15 17:48:33

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我有一个用户可以创建项目的rails应用程序。一个用户无法看到其他用户的项目。但是,如果我复制用户1创建的项目的URL(例如`localhost:3000 / projects / 23 / edit)并登录到用户2并粘贴直接URL,我仍然可以编辑该信息。交叉引用创建项目的用户只允许该用户查看/编辑param链接页面的最佳方法是什么?

EDIT 在我的项目控制器中,我有:

def index
    @projects = Project.where(user_id: current_user)
    @default_working_project = current_user.default_working_prodject
    unless production.user == current_user
        redirect_to dashboard_index_path
end

2 个答案:

答案 0 :(得分:2)

如果项目中有foreign_key(如owner_id或user_id),那么你可以做

current_user.projects.find(params[:id]) 
项目控制器中的

仅允许该用户访问现有项目。

我怀疑您的数据库中有一些东西可以识别用户及其与项目的关系。

在sql查询中添加了where子句:projects.user_id = ?。因此,将向任何无权访问的用户抛出异常,并且将引发未找到的404。

答案 1 :(得分:0)

您必须设置授权,以便控制允许谁对任何项目执行操作。

有几个宝石可以帮助解决这个问题,我个人会推荐Pundit。 https://github.com/elabs/pundit