2013-10-19 74 views
0

我在cakephp中真的很新。我想知道如何限制用戶打開頁面,如用戶,例如當用戶更改網址時。那麼,我不善於告訴我自己的問題,所以在這裏:當用戶直接更改鏈接時限制訪問Cakephp

例如:用戶ID是1,所以當他查看自己的細節時,它應該是像用戶/視圖/ 1,但我不希望該用戶當他將url更改爲users/view/2時查看用戶#2。我希望你能理解。提前致謝!

回答

0

該解決方案可以通過谷歌找到: http://www.dereuromark.de/2011/10/05/common-cakephp-problems-and-solutions/

基本上,你會得到當前ID:

$uid = $this->Session->read('Auth.User.id'); 

並將其與正在顯示/編輯的記錄。 如果它們不匹配,則拋出NotAllowedException()。

Protip:如果它是用戶自己的配置文件或者只能由所有者查看,請不要追加編輯/查看等。 您也可以通過同樣的方式獲取上面的ID進行驗證,您還可以使用此會話用戶ID來獲取正確的記錄。

此外,不要將id放入視圖(表單) - 甚至不能作爲隱藏字段 - 但在保存/驗證之前將其注入到數據數組中。

您還可以看到一個當前的CakePHP 2.4實現here - 它也可以通過相應的網站實時查看/測試。

0

假設您有某個地方的會話中的用戶數據存儲區中存在當前隊列。 的想法是把它和傳遞的ID在URL

比較----在UsersController.php

public function view($id){ 

    if($this->Session->read('User.id') != $id){ 

     // cannot continue... 
     // possibly redirect.... 
    } 

}