除了身份验证之外,还有其他方法可以区分用户吗?

时间:2019-05-28 18:02:12

标签: python django

在我的应用中,用户可以选择一个YouTube视频,该视频将下载到MEDIA_ROOT文件夹中,然后也可供用户下载。

只要用户选择其他视频进行下载,就会从MEDIA_ROOT中删除前一个视频。因此,在任何给定时刻,MEDIA_ROOT文件夹中只有一个视频供特定用户使用。

除了实现用户身份验证并通过外键将下载的文件与用户相关联之外,还有什么其他方法,我觉得仅此任务是过大的选择-每当提出下载请求时就将用户分开一个用户的请求不会导致其他用户下载的文件被删除(因为所有文件都位于同一MEDIA_ROOT文件夹中)?

2 个答案:

答案 0 :(得分:1)

假设您拥有某种类型的Web服务器,则可以创建自定义链接,这些链接可通过Web服务器重定向并传递IP信息等,因此您可以在下载视频之前区分用户。当然,这是无需身份验证的一种方法,并且由于跟踪用户数据的应用程序/平台是内部的,因此您不必担心外键等。

答案 1 :(得分:0)

您可以使用Cookie来唯一标识用户。只要未清除Web浏览器的cookie存储,Web浏览器就会一直将该cookie值发送到您的Web服务器。确保为网络浏览器存储一个难以猜测的值,以便您识别它,以免他人暴力破解该值并无法访问旨在供其他用户使用的数据。常见的方法是从CSPRNG生成一个32字符的字符串。

您可以解决这个问题,以了解如何在Python Django中设置Cookie:Django Cookies, how can I set them?

我个人将使用内置的Django Cookie会话:https://docs.djangoproject.com/en/2.2/topics/http/sessions/#using-cookie-based-sessions