问题
我目前正在努力解决从Django提供身份验证强制媒体文件的众所周知的问题。问题的背景很简单:
X-Accel-Redirect
。 尝试解决
到目前为止我所做的(并且它有效)是创建另一个API视图,需要令牌身份验证并将文件发回,然后创建一个Angular指令以使用blob替换所有受保护的URL。当用户单击链接时,它使用令牌身份验证获取文件,然后创建包含该数据的Blob。然后浏览器打开那个blob。
不幸的是,无法共享blob,因此用户无法为这些文件粘贴彼此的链接。我想知道是否有办法绕过它。
目标
我的目标是使用令牌创建有效(和短期到期)会话。这样,当用户单击链接时,会发送请求以检查是否存在有效会话,然后以某种方式配置浏览器以便它可以使用该会话。整个过程将如下所示:
我没有找到已实施的答案,我可以自己处理好的细节。我更感兴趣的是获得有关如何以最佳方式完成此操作的反馈。即:
部分选项
更新:我已与一些提出以下选项的同事交谈过:
答案 0 :(得分:2)
您可以简单地将令牌放入cookie中。
这样,它将由浏览器自动发送到服务器,当用户直接访问可下载文件时,您可以将其用于身份验证。
不要读取Authorization:
标题,而是告诉您的Django中间件从cookie中读取标记字符串。
答案 1 :(得分:0)
我想了解有关此主题的更多信息。
我也从django获得了令牌,但是每次刷新页面时,用户都会再次登录。我想将其保存在Cookie中,以使用户即使关闭浏览器也可以发出请求。
我也想通过csrf保护来保护它,但是我不知道该怎么做。 另外,将令牌作为纯文本包含在cookie中是否安全? 我对此过程有很多疑问。
我正在使用django作为后端API,并使用reactjs作为前端。
如何让django生成cookie和csrf cookie?
1)我希望能够使用令牌从浏览器到我的网站进行身份验证(
2)我也想将这个api用于移动应用程序吗?因此创建cookie,是否会在移动应用程序身份验证期间产生冲突?