有些收费的下载链接需要动态链接,而且限时,过期就不能下载 有 gem 支持吗?
或者大家有较好的设计方案呢?
数据库里面存 token 和过期时间,action 中检查,通过则 send_file send_data,不通过则返回 forbidden
恩,谢谢反馈,我自己也是这么想的,如果没有更好的方法就用这种
直接 send 这会很悲剧吧。
面向独立用户的我做过是这样的:先根据客户端特征及预设过期时间拼出带 token 的“下载链接”(具体的规则我忘记了,那时候用的还是.NET,- -),请求时效验合法则跳转到真实下载地址。另外为了真实地址永久有效会有一个机制,隔一段时间双向更新真实地址。这样 web server 只做验证,其他 server 只做下载。
这方法不一定适用,毕竟要看需求。
#3 楼 @anylei http://apidock.com/rails/ActionController/Streaming/send_file 现在应该会自动用 X-sendfile 了,由静态服务器处理文件发送。我还没试过
#4 楼 @Rei 确实,这样就省事多了。