我正在设计一个拥有众多用户的网站,每个用户都有很多帖子,每个帖子都有很多照片。因为我希望用户可以在创建新帖子时预览上传照片,所以我找到了答案here,建议使用子表单上传照片。
我使用carrierveaves处理照片上传,并使用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 of the photo}
用户可多次重复步骤1和2,然后提交帖子。
然而,一切运作良好......
我不认为允许对photo_ids进行批量分配是个好主意,因为有人可以使用此请求将其他用户的照片分配给他的帖子。 (在编辑视图中) 参考答案建议使用一些随机访问密钥来提高安全性, 但当有人访问其他用户的帖子时,他仍然可以获得这些照片的随机访问密钥,对吗?
所以现在实施不安全吗?
有人能给我一些建议或者解决这个问题的正确方法是什么?