我正在设计一个有很多用户的网站,每个用户都有很多帖子,每个帖子都有很多照片。因为我希望用户在创建新帖子时可以预览上传的照片,所以我在这里找到了答案,建议使用子表单上传照片。
我使用carrierwaves 来处理照片上传,并使用jquery-file-upload 来处理用户界面。这些型号是:
class User < ActiveRecord::Base
has_many :posts, dependent: :destroy
end
class Post < ActiveRecord::Base
attr_accessible :title, :description, :photo_ids
belongs_to :user
has_many :photos, :dependent => :destroy
end
class Photo < ActiveRecord::Base
mount_uploader :image, ImageUploader
attr_accessible :image
belongs_to :post
end
在新的帖子视图中,我在普通帖子表单上方放置了一个 jquery-file-upload UI,然后:
当用户选择一张照片时,它将通过 jquery-file-upload api 上传到 PhotosController。在这一步,这张照片的 post_id 为零。
照片上传完成后,我使用 javascript 添加一个隐藏的输入表单,如下所示:
input type="hidden" id="collection_image_ids" name="collection[collection_image_ids][]" value=#{照片的id}
用户可以多次重复第 1 步和第 2 步,然后提交帖子。
一切都很好,但是....
我认为允许为 photo_ids 批量分配不是一个好主意,因为有人可以使用此请求将其他用户的照片分配给他的帖子。(在编辑视图中)参考答案建议使用一些随机访问密钥来提高安全性,但是当有人访问其他用户的帖子时,他仍然可以获得那些照片的随机访问密钥,对吗?
所以目前实施并不安全,对吧?
谁能给我一些建议或处理这个问题的正确方法是什么?