保护特定/资产文件不受路由中的直接访问或以其他方式保护?
我的资产包括fronted.css和backend.css 这个后端css文件我将禁止从URL直接访问,因此它只能从我的backend_controller.rb中加载。
这有可能吗?
答案 0 :(得分:2)
在生产中,Rails不控制资产,这适用于webserver。您只能通过从网站的公共部分中排除来隐藏它们。
您可以为前端和后端使用不同的布局,或者为自定义操作注入一些数据。
布局方式:
在backend_controller.rb中:
class BackendController...
layout 'backend' #you can use :only or :except parameter if you need
...
end
在/ your_app / app / assets / stylesheets中创建backend.css和文件夹'后端',将所有后端样式表移到'后端'文件夹和在backend.css中插入:
/*
*= require_self
*= require_tree ./backend
*/
在/ your_app / app / views / layouts文件中创建backend.html.erb。这是你的后端布局。插入<%= stylesheet_link_tag "backend" %>
*= require_tree .
中删除(此指令递归,包括/ your_app / app / assets / stylesheets和backend.css中的所有文件)。
如果您需要使用*= require file_name_without_extension
或*= require_tree ./directory_name
注射方式:
在/your_app/app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<%= stylesheet_link_tag "application", :media => "all" %>
...
<%= yield :my_custom_css %>
</head>
...
在任何文件中,您需要自定义样式表(例如/your_app/app/views/categories/new.html.erb):
<% content_for :my_custom_css do %>
<%= stylesheet_link_tag 'backend' %>
<% end %>
*= require_tree .
,或者您的自定义css文件将包含在应用程序布局中