0
我有一個控制器在一個CakePHP應用程序中,我有一堆的行動。我使用ACL Component來管理哪些用戶可以執行我的控制器中的哪些操作。我有一個isAuthorized()行爲在我的控制器檢查,如果某個登錄的用戶被允許執行所請求的動作,看起來像這樣:cakephp isAuthorized被調用的每個動作調用
function isAuthorized()
{
switch($this->action)
{
case 'myAction':
$user_id = $this->Auth->user('id'); // the id of the connected user
if($user_id)
{
return $this->Acl->check(
array('model' => 'MyModel', 'foreign_key' => $user_id),
'controllers/MyController/myAction'
);
}
break;
}
}
正如你可以在上面看到,所有我做的是檢查允許連接的用戶通過使用Acl組件的方法check
執行myAction
。我用這種方法遇到的問題是這個檢查每調用一次myAction
被調用。有沒有辦法告訴Cake只執行一次這個檢查(例如在第一次調用動作時)?通過每次檢查是否允許用戶執行控制器操作,從而減慢應用程序的執行速度。
任何幫助或建議表示讚賞
謝謝
「通過檢查每一次是否允許用戶執行控制器操作,從而減慢應用程序的執行速度。」真?與整個請求相比,訪問檢查需要多少時間? – Danack
由於某些控制器操作被調用了很多次,這就是爲什麼應用程序變得更慢,因爲每次我調用該操作時,Cake都必須執行檢查。這就是爲什麼我只想執行此檢查一次只有 – user765368
是的,但多少?你如何衡量時間? – Danack