2013-05-16 64 views
0

如果記錄ID不屬於用戶,我正在使用isAuthorized來拒絕對方法的訪問。配置文件可以有許多文件和文件屬於一個輪廓:當傳遞參數時CakePHP isAuthorized not proper proper

控制器/ DocumentsController.php

​​

型號/ Document.php

public function isOwnedBy($document, $user) { 
    return $this->field('id', array('id' => $document, 'user_id' => $user)) === $document; 
} 

我傳遞的profile id$iddocments/add從我的個人資料視圖通過Cake鏈接幫助:

查看/ Profiles/view.ctp

echo $this->Html->link('New Document', 
    array('controller' => 'documents', 'action' => 'add',$profile['Profile']['id']) 
); 

,當我在新建文檔單擊從profiles/view會發生什麼事是,它發出的請求,但不重定向,只需刷新頁面,或將其重定向回profiles/view,不知道哪個。我的第一個猜測是因爲我沒有在DocumentsController內定義profile id中的isAuthorized回調,isOwnedBy返回false。有關如何在DocumentsController內取得isAuthorized中的個人資料ID的任何建議?

在此先感謝!

+0

你可以做更多的測試/調試來確定它是否進入'isAuthorized',如果是的話,它在哪裏失敗......等等? – Dave

+0

它是,當我將添加方法添加到允許的操作列表中時,我可以添加文檔沒有問題。 – Dan

回答

0

對此的解決方案相對簡單。當使用來自另一個控制器的參數使用isAuthorized時,請務必引用正確的模型。

if ($this->Document->Profile->isOwnedBy($document_id, $user['id'])) { 
    return true; 
}