0

特定の /assets ファイルをルートまたはその他の方法で直接アクセスできないように保護しますか?

fronted.css や backend.css などのアセット内にあるこのバックエンド css ファイルは、URL からの直接アクセスを無効にして、backend_controller.rb 内からのみロードできるようにします。

これはどういうわけか可能ですか?

4

1 に答える 1

2

本番環境では、Rails はアセットを制御しません。これは Web サーバーの作業です。サイトの公開部分から除外することによってのみ、それらを非表示にすることができます。

フロントエンドとバックエンドに異なるレイアウトを使用したり、カスタム アクションにデータを挿入したりできます。

レイアウト方法:

  1. backend_controller.rb で:

    class BackendController...
      layout 'backend' #you can use :only or :except parameter if you need
      ...
    end
    
  2. /your_app/app/assets/stylesheets で backend.css とフォルダー 'backend' を作成し、すべてのバックエンド スタイルシートを 'backend' フォルダーに移動し、backend.css にこれを挿入します。

    /*
     *= require_self
     *= require_tree ./backend
    */
    
  3. /your_app/app/views/layouts ファイル backend.html.erb に作成します。これがバックエンドのレイアウトです。そこに挿入<%= stylesheet_link_tag "backend" %>

  4. /your_app/app/assets/application.css 行から削除することを忘れないでください*= require_tree .(このディレクティブは /your_app/app/assets/stylesheets 内のすべてのファイルと backend.css も含めて再帰的です)。いくつかのファイルまたはディレクトリを要求する必要がある場合は、またはを使用し*= require file_name_without_extensionます*= require_tree ./directory_name

注入方法:

  1. /your_app/app/views/layouts/application.html.erb 内

    <!DOCTYPE html>
    <html>
      <head>
        <%= stylesheet_link_tag    "application", :media => "all" %>
        ...
        <%= yield :my_custom_css %>
      </head>
      ...
    
  2. どのファイルでもカスタム スタイルシートが必要です (例: /your_app/app/views/categories/new.html.erb):

    <% content_for :my_custom_css do %>
      <%= stylesheet_link_tag 'backend' %>
    <% end %>
    
  3. *= require_tree ./your_app/app/assets/application.css から削除しないと、カスタム css ファイルがアプリケーション レイアウトに含まれます。

content_for ドキュメンテーション

于 2012-06-09T14:58:16.453 に答える