Rails url 项目检查

Rails url project check

我有一个 rails 应用程序,用户可以创建项目。一个用户无法看到其他用户的项目。但是,如果我复制用户 1 创建的项目的 url(例如 `localhost:3000/projects/23/edit)并登录到用户 2 并直接粘贴 url,我仍然可以编辑信息。交叉引用创建项目的用户以仅允许该用户 see/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

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

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

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

current_user.projects.find(params[:id]) 

在项目控制器中只获取该用户可访问的现有项目。

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

在 sql 查询中添加了一个 where 子句:projects.user_id = ?。因此,将向任何没有访问权限的用户抛出异常,并引发 404 not found。