0

私の Ruby on Rails アプリケーションでは、apache .htaccess 機能を使用して public フォルダーの一部を保護し、認証されていない人がファイルからアクセスできないようにしようとしています。そのため、.htpasswd ファイルを配置してこのフォルダーを保護し、それに応じて apache をセットアップすると、ファイルにアクセスするためのログイン/パスワードが求められます。

Restful 認証プラグインを使用して、資格情報に対してユーザーを認証します。私の考えは次のことでした:

  1. ユーザーを認証する
  2. ユーザーが認証されている場合は、HTTP_AUTHORIZATION 変数を設定して保存し、ブラウザーがログイン/パスワードを要求することなく、保護されたフォルダーのファイルにアクセスできるようにします。

私がしたこと、アプリケーションコントローラーで:

helper_method :set_http_auth 

def set_http_auth  
  request.env['HTTP_AUTHORIZATION'] = AutionController::HttpAuthentication::Basic.encode_credentials("myLogin","myPassword")  
end

次に、コントローラで before_filter を呼び出して値を設定します。

HTTP_AUTHORIZATION が request.env 配列に設定されているようですが、残念ながら、保護されたフォルダー (画像など) からファイルを取得しようとすると、ブラウザーは引き続きログイン/パスワードを要求します。

誰かがアイデアを持っているなら、私はすべて耳にします:)ありがとう!

4

2 に答える 2

1

さまざまなソリューションを調べたところ、mod_xsendfile を使用するのが最善のようです:
sudo apt-get install mod_xsendfile

before_filter :login_required

def download
    send_file '/home/railsway/downloads/huge.zip', :type=>"application/zip", :x_sendfile=>true
end

これにより、Rails プロセスが拘束されることはありません (Apache は、x-sendfile ヘッダーを受信すると、パブリック ディレクトリの外部でファイル自体を提供します)。したがって、ファイルを保護するための最も効率的で非常に簡単な方法です。独自の認証を自由に使用してください。Nginxとlighthttpdには同様のソリューションがあります...

于 2011-07-06T14:14:27.157 に答える
0

適切な解決策を見つけました。ここでは、アプリケーションに大きな変更を加える必要があります。

その代わりに、apache cookie検出を使用してフォルダーを保護し、ファイルにアクセスしようとしたときにcookieが存在するかどうかを確認することを選択しました(cookieはユーザーの認証時に設定されます)。

私にメールしてくださいあなたは詳細が欲しいです...

于 2010-01-28T19:10:09.767 に答える