【发布时间】:2015-09-04 05:01:10
【问题描述】:
目前,我的index.html 文件包含
<a href="static/file.ext">Download</a>
我想更改此设置,以使下载 url 仅在特定时间内有效。例如,我将如何将其更改为
<a href="get_file?file=file.ext&token=TEMPORARYTOKEN">Download</a>
在我的 Flask 文件中,我可以拥有
@app.route('/get_file')
def get_file():
filename = request.args.get('file')
token = request.args.get('token')
if token is valid: # what can be done here
return send_from_directory('static', filename)
如何生成和处理令牌?还是我完全错了?
【问题讨论】:
-
虽然我认为您的问题是正确的,但我想讨论与此相关的一件事。仅仅因为这个限制,我们将强制框架(django/flask/RoR)将文件流回,而如果有一个解决方案可以让 nginx/apache 为它提供服务,我会喜欢它。
-
有没有更好的方法来为使用 nginx 或 apache 的下载提供临时身份验证?它将如何与程序的其余部分进行通信?
-
你用的是什么框架?
-
框架是指
Flask之类的东西,还是其他意思?目前,我只是使用Flask的内置run()方法在本地运行服务器,但对于生产我可能会部署到第三方服务器,如Heroku。 -
@darkryder
send_from_directory和send_file来自 flask 支持X-Sendfile标头,它将文件的实际发送委托给 Web 服务器(通常是带有 flask 的 nginx)。
标签: python authentication download flask session-timeout