2013-05-25 42 views
1

我已經安裝了CakeDC用戶插件,並且我發現role,is_admin默認情況下不起作用。如果我以常規用戶名登錄role = registeredis_admin = 0,我仍然可以去/admin/users/add/。爲什麼有兩種類型的支票,roleis_admin,如果role = administratoris_admin = 0或反之亦然?CakeDC管理員可以通過各種用戶/角色默認訪問,使其安全

我正在尋找這個問題的首選解決方案,所以我可以保護管理部分,並利用不同頁面上的用戶角色。仍然無法理解爲什麼is_admin目前,當role = administrator可以照顧這一切。

+0

這不是插件的問題:你要實現你的身份驗證廣泛的應用程序。該插件只是爲您提供基礎知識,但不根據客戶的要求定製應用程序。 http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html – burzum

+0

@burzum我寫了它,但我沒有得到爲什麼在默認表中有'is_admin'和'role'字段。 – Davit

回答

3

我在方法解決了非常相同的問題通過將下面的片的代碼中的「應用程序/控制器/ AppController.php」「beforeFilter()」:

if (isset($this->params['prefix']) && $this->params['prefix'] == 'admin') { 
     if ($this->Session->check('Auth.User.role') and 'admin' !== $this->Session->read('Auth.User.role')) { 
      $this->Auth->deny('*'); 
      return $this->flash('Non admin access unauthorized', '/'); 
     } 
    } 

儘管我承認這種解決方案不是最佳的,它確實有訣竅!

+0

我有相同的第一行,但不是第二行會話檢查我有'如果($ this-> Auth-> User('role')!==「admin」|| $ this-> Auth-> User ('is_admin')!== true)'你怎麼看待這個?有沒有建議我切換到您的版本?謝謝。 – Davit

+0

@DachiN。 :我只能依靠「角色」字段來評估管理員訪問權限。主要是因爲我不明白爲什麼用戶會同時具有'admin'角色和is_admin = false。這對我來說有點多餘。但是YMVM –

2

這是不是該插件的問題:您必須自行實施您的auth應用程序。該插件只是爲您提供基礎知識,但不根據客戶的要求定製應用程序。我建議你本章http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

的is_admin檢查和角色字段閱讀是有多種原因:您的用戶可以有任何的作用,但前提是他們必須is_admin檢查,他們可以例如訪問管理區。 is_admin本身不允許你有角色。這兩個領域都涵蓋了不同的場景。再一次,插件被認爲是一個開始和基礎,你可以建立。這就是你想要定製它時必須要做的事情。

有,顯示非常如何使用任何你需要的例子:

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#using-controllerauthorize

class AppController extends Controller { 
public $components = array(
    'Auth' => array('authorize' => 'Controller'), 
); 
public function isAuthorized($user = null) { 
    // Any registered user can access public functions 
    if (empty($this->request->params['admin'])) { 
     return true; 
    } 

    // Only admins can access admin functions 
    if (isset($this->request->params['admin'])) { 
     return (bool)($user['role'] === 'admin'); 
    } 

    // Default deny 
    return false; 
} 

}

相關問題