我已经阅读过M. Hartl关于ROR教程的书,并在那里为本书的用户编辑和更新操作"@user = User.find(params[:id])"
查找用户,然后出于授权目的添加"correct_user"
检查@user是否为当前用户的方法。令我困惑的是,为什么我不能让用户开始在编辑和更新操作中使用"@user = current_user"
,这样我就不必担心用户通过其他用户ID传递URL。我想这种方法是否留下任何安全漏洞?我正在使用Devise,所以我已经有了current_user
方法。
答案 0 :(得分:1)
该方法的一个潜在问题是,可能是具有特殊权限的用户(管理员,审核人等)尝试编辑他们 允许更新的其他用户。最好坚持从数据库中提取。此外,如果rails已经在当前请求周期中提取了用户,则应该缓存该对象,因此它实际上不应该执行第二个数据库请求。