保护特定的 /assets 文件免受路由中的直接访问或以其他方式?
我的资产里面有fronted.css 和backend.css 这个后端css 文件我会禁用从URL 的直接访问,所以它只能从我的backend_controller.rb 内部加载。
这有可能吗?
保护特定的 /assets 文件免受路由中的直接访问或以其他方式?
我的资产里面有fronted.css 和backend.css 这个后端css 文件我会禁用从URL 的直接访问,所以它只能从我的backend_controller.rb 内部加载。
这有可能吗?
在生产中,Rails 不控制资产,这适用于网络服务器。您只能通过从网站的公共部分中排除来隐藏它们。
您可以为前端和后端使用不同的布局,或者为自定义操作注入一些数据。
排版方式:
在 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',将所有后端样式表移动到 'backend' 文件夹中,然后在 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 .
从 /your_app/app/assets/application.css 中删除,否则您的自定义 css 文件将包含在应用程序布局中