Rails Rails 下如何控制对 public 中的静态文件的访问

lilijreey · 2016年09月20日 · 最后由 sunshineboy 回复于 2018年08月03日 · 3476 次阅读

各位亲,public/目录下有些页面我需要登录以后的用户才能访问. 这个功能怎么做? 一个要求,我现在用 gitbook 生成一本书的静态网页。我把这些静态页面放在一个项目的 publi 文件夹中,但是如何控制对这些静态文件的访问. 比如需要登录才能访问,有或者满足一定条件才能访问呢?

nginx 上做限制

#1 楼 @i5ting 能具体一点吗亲😂

换思路,下载 GitBook 生成的书,不要直接通过 public 下载,而是先让下载按钮点击以后请求一个要验证权限的页面,然后那个页面做 send_file 或 redirect

#3 楼 @huacnlee 恩,这个思路是可以的。我得看一下 send_file 的具体方式。感谢

不过还有个问题,静态文件放到哪里呢,不能是 public,但是有要让反向代理能够访问到?

补充:这种需求是很常见的。通过使用的 X-Sendfile,在 Nginx 中由 X-Accel-Redirect 机制。就可以做到想通过 App 执行罗辑, App 只发送一个重定向头给反向代理,让后有反向代理直接发送给客户端. 参考 http://ranjithkumar.github.io/blog/2014/09/10/rails-number-send-file-plus-nginx-x-accel-redirect/

实在没办法,试试在 production.rb 中修改 config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? 改为: config.public_file_server.enabled = true

需要 登录 后方可回复, 如果你还没有账号请 注册新账号