【发布时间】:2019-03-22 18:16:39
【问题描述】:
我正在构建一个单页应用程序。
在客户端,我使用的是 Nuxt.js(包括 Vue.js 和 Vuex)。
要向服务器发送和接收数据,我使用 axios。
API 是使用 Django REST 框架构建的。
我有以下场景:
如果用户想要注册,他从第 1 页开始。 在这里,他可以上传个人资料图片。一旦他选择了图片,它就会自动上传到 S3 存储桶中。
在上传期间或之后,他可以填写其他字段名字和姓氏。 所有这些字段都临时保存在 Vuex 存储中,这意味着如果用户重新加载页面,数据就会消失。
如果他点击下一页,他将被带到另一个页面(另一个 URL;没有页面重新加载 -> 单页应用程序),他可以在其中输入剩余数据。
点击按钮创建帐户后,该条目在数据库中创建。
现在我的问题...我应该如何处理图片上传? 如前所述,图片应在选择后直接上传,而不仅仅是点击按钮创建帐户。
有时我必须在图像和帐户之间建立关系。
到目前为止,我已经提出了以下解决方案。以下 ER 模型代表我的数据库表。
如果用户在第 1 页上选择了一张图片,它会立即上传到 S3 存储桶中,并且会在 Image 表中创建一个条目。
API 返回此图像条目的 ID。我将此 ID 保存在临时 Vuex 存储中,以便我可以在 第 2 页 上使用它来将其发送到负责创建帐户的 API 端点。
问题是,Vuex Store 并不“安全”,因为有经验的用户可以通过控制台轻松编辑值。所以他可以将图像条目的 id 更改为他根本没有创建的条目。
有谁知道如何解决这样的问题,或者如果这种方法在创建帐户之前处理图片上传很常见?
(我已经在很多页面上看到过这种情况,但我不知道他们是如何解决的)
【问题讨论】:
标签: django vue.js amazon-s3 django-rest-framework vuex