- - PR -
Apacheで、PDFファイルへのアクセスをフォーム認証へリダイレクトさせたい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-10-11 12:46
こんにちは。
Google検索していましたが、なかなか問題解決に至る情報が得られませんでしたので こちらでみなさんのご助力を賜りたいと思い、書き込みをさせていただきます。 現在、Fedora8、Apache2.2.6、PHP5を使い、簡易なCMSを開発しております。 このCMSでは、Form認証を採用しており、認証情報はSessionに保持しています。 ユーザからWebサーバ上にあるPDF、Excel、Wordファイルへのリクエストが直接あった場合、 未認証のユーザならば、認証ページへリダイレクトさせ、 認証済みのユーザならば、そのままPDFなどのファイルをダウンロードさせる ということをしたいと考えています。 例えば、ユーザから、http://sample.com/docs/test.pdf へのリクエストがあった場合、 下記のように、認証ページである http://sample.com/login.php へリダイレクトさせることを考えます。 例) http://sample.com/docs/test.pdf のとき → http://sample.com/login.php?redirect=%2Fdocs%2Ftest.pdf 認証後に、http://sample.com/docs/test.pdf へ再びリダイレクトするために、 login.php の引数には、/docs/test.pdf をURLエンコードしたものを渡しています。 http.confで、RedirectMatchディレクティブを使うなど考えましたが スマートなやり方が思いつきませんでした。 このようなことを行うために、どのようにApacheの設定を行えばよいでしょうかご教授ください。 [ メッセージ編集済み 編集者: うま 編集日時 2008-10-11 12:49 ] |
|
投稿日時: 2008-10-12 02:03
いろいろ調べてみました。
以下、私なりの答えを説明いたします。 私は、Apacheのmod_rewriteモジュールを利用してみました。 .htaccessファイルを次のように記述しました。 この設定では、PDFやExcelファイルなどにリクエストがきたら、 強制的に check.php へのリクエストに書き換えて処理するようにしています。 check.phpでは、未認証ならば、認証ページへリダイレクトさせ、 認証済みならば、そのままリクエストされたURLのファイルをレスポンスとして返しています。 [.htaccessの内容] ----------------------------------------------------------------- RewriteEngine on RewriteRule ^.*\.(pdf|doc|xls|ppt)$ /check.php [L] ----------------------------------------------------------------- [check.phpの内容] ----------------------------------------------------------------- session_start(); if(未認証ならば) { $redirect=$_SERVER["REQUEST_URI"]; $redirect = urlencode($redirect); header("Location: $SYSTEM_URL/login.php?redirect=$redirect"); } else { $file_path = $_SERVER["DOCUMENT_ROOT"] . $_SERVER["REQUEST_URI"]; $file_size = filesize($file_path); $content_type = 何らかの処理でContent-Typeの文字列を取得させる header("Content-type: $content_type;"); header("Content-Length: $file_size"); readfile($file_path); } ----------------------------------------------------------------- 他にスマートな方法がありましたら、ご指摘いただけると助かります。 [ メッセージ編集済み 編集者: うま 編集日時 2008-10-12 02:05 ] |
|
投稿日時: 2008-10-14 00:19
>このCMSでは、Form認証を採用しており
前提から反れちゃいますが、 BASIC認証が一番簡単そうかも。 |
|
投稿日時: 2008-10-14 08:40
start_sessionとあるので、恐らくクッキーを使用しているので
mod_auth_cookie等が使えるかもしれません。 |
1