2009-11-10 18 views
6

我打算在我的活動索引頁面上設置權限,該權限只允許某些用戶查看添加活動時設置的設置。用戶點擊進入我的活動後,活動控制器將首先檢查用戶標識並檢查控制用戶可以查看其日曆中的哪個活動的活動數據庫。用戶創建事件並共享給其他用戶時添加權限。除此之外,我如何才能找到當前的用戶ID與我的事件數據庫進行比較,這是準確的1?如何在我登錄後在其他頁面控制器中找到我當前的用戶ID?

對我來說有什麼建議可以做到這個功能嗎? 我需要知道代碼和概念,我如何獲得當前用戶標識與所有事件數據庫進行比較,並允許當前用戶查看特定事件。

非常感謝您的信息。

回答

6

使用會話爲頁面之間的用戶保存和讀取數據。

在控制器:

// store a user id in the session 
$this->Session->write('User.id', $userId); 

// read a user id from the session 
$userId = $this->Session->read('User.id'); 

在瀏覽:

// read a user id from the session 
$userId = $session->read('User.id'); 

您可以使用,如果你喜歡的東西了 「User.id」 任何你想要的關鍵。我只是使用這個,因爲它是AuthComponent默認使用的。

+1

+1詳盡的例子,但「會議助手之間的主要差別的會話組件是幫助者無法寫入會話。「 http://book.cakephp.org/view/484/Session – deizel 2009-11-10 10:24:52

+1

感謝您指出這種差異,我更新了我的迴應以反映這一點。 – 2009-11-10 10:33:55

2

您正在查找的是ACL(訪問控制列表)。有一個內置於Cake的AclComponent,你應該看看。它與AuthComponent一起工作,它將保存用戶標識。一開始有點複雜,但值得一提。

+0

AclComponent僅適用於某些*授權*模塊的引擎蓋下。 AuthComponent是查找* authenticated *用戶以及其他頂級auth相關事物的地方。 – spinkus 2014-03-17 08:23:32

1

此外,對於一個簡單的方法,請看modelcontroller設置AuthComponent::authorize。這允許您在控制器或模型(您的選擇)中定義一個isAuthorized()方法,該方法將存儲確定訪問的邏輯(如果允許,應返回true,如果被拒絕,返回false)。

相關問題