0

私たちはCakePHP 2.3を実行しています...

PDF ファイルへのアクセスを制御する必要があります。たとえば、ユーザーは自分の PDF を表示/ダウンロードできる必要がありますが、他のユーザーはできない必要があります。管理者はそれらすべてを表示できます。等。

最初の質問は、これらのファイルを CakePHP のディレクトリ構造内のどこに置くべきかということです。

/webroot/files/... を試してみましたが、これらは公開されているようです (つまり、フルパスを知っていれば、誰でも任意のファイルに直接移動できます:www.example.com/files/private.pdf

ファイルが安全な場所に保存されたら、次の質問は、適切なユーザーが適切なファイルにアクセスできるように、承認を処理する最善の方法は何かということです。

CakePHP にはこれに対するサポートが組み込まれているようですが、ドキュメントが見つかりません。

4

2 に答える 2

2

公開したくないファイルを webroot に置かないでください。その場合、.htaccess の変更は必要ありません。

ファイルをphp経由でクライアントに送信するには、メディアビューまたはリクエストオブジェクトがあります。何を使用するかは、CakePHP のバージョンによって異なります。

使用している認証アダプターは、 FilesController::download() メソッドまたはメソッドとコントローラーの名前に適用されます。

于 2013-09-24T16:37:41.160 に答える
1

通常の方法で PDF へのアクセスを拒否するには、PDF を保存するフォルダーに .htaccess ファイルを追加する必要があります。 htaccess によるフォルダーとファイルへの直接アクセスを拒否する pdf をどこに置くかは特に問題ではありませんが、webroot フォルダーと独自のフォルダーのどこかに置くことをお勧めします。

次に、単にリンクするのではなく、pdf を表示するコントローラーの 1 つに関数を追加する必要があります。CakePHP < 2.3 では、mediaview クラスでそれを行うことができます。 http://book.cakephp.org/2.0/en/views/media-view.html CakePHP の新しいバージョンでは、ファイルを送信します。 http://book.cakephp.org/2.0/en/controllers/request-response.html#cake-response-file

于 2013-09-24T16:19:08.477 に答える