これに対処する最も簡単な方法は、認証にAuthComponentを使用し、ページの「このファイルをダウンロード」リンクからのダウンロードプロンプトを処理するためにMediaViewを使用することです。
例。
class SomeController extends AppController {
...
public $components = array(
'Auth' => array(
... auth settings ...
),
...
);
public function download( ){
$this->view = 'Media';
$this->set( array(
'id' => 'TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx.jpg',
'name' => 'TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx',
'download' => true,
'extension' => 'jpg',
'path' => join( DS, array(
APP, 'webroot', 'documents', 'users', ''
))
));
}
これは、AuthComponentに関して制限されたアクションとしてダウンロードアクションがあることを前提としています。ダウンロードアクションを許可している場合は、MediaViewコードをAuth-> user()チェックでラップすることができます。
public function download( ){
if( $this->Auth->user( )){
$this->view = 'Media';
$this->set( array(
'id' => 'TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx.jpg',
'name' => 'TGlnaHRob3VzZS5qcGcxMjc3ODIzMTAx',
'download' => true,
'extension' => 'jpg',
'path' => join( DS, array(
APP, 'webroot', 'documents', 'users', ''
))
));
} else {
... do something else here ...
}
}
これは、Authに有効なUserオブジェクトがセッションに保存されていることを確認するだけです。これは、ユーザーがログインしている場合にのみ発生します。
いくつかのメモ:
join(DS、array('path'、'parts'、'')呼び出しの最後に空白の配列エントリを使用して、パスに必要な末尾のスラッシュを取得します。必要に応じて実行してください-私は部分的に参加しています繰り返しの文字列やパスを作成するときは自分自身。
http://book.cakephp.org/view/489/Media-Views
http://book.cakephp.org/view/563/Setting-Auth-Component-Variables