程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> CPhpAuthManager的使用方法

CPhpAuthManager的使用方法

編輯:PHP基礎知識
 

為什麼 CPhpAuthManager 是"邪惡的"?

第一次使用有什麼問題? 你設置 auth.php 文件,它有規則 - 沒問題.

實際上當你逐漸使用的時候你會發現很多問題.

讓我們來先看一下 CPhpAuthManager::assign 方法。從下面這段來開始了解:

$this->_assignments[$userId][$itemName]

向某個用戶分配角色,它將添加到現有的分配(assignments),用戶 ID 作為鍵。我們可以使用一下方法來檢查是否分配:

isset($this->_assignments[$userId][$itemName])

現在你看到的代碼中沒有 session,所以如果你沒有保存,用戶下一次訪問其他頁面的時候將會沒有角色.

所以你應該在角色分配或撤銷的 最後 保存(循環的最後,不是中間).

CPhpAuthManager::save 方法將所有分配的角色數據保存到 auth.php.

還記得剛才的問題嗎?
 

$this->_assignments[$userId][$itemName]

就像你看到的 auth.php 將會被覆蓋,並且每個用戶Id都將會被添加一次角色.假如你有 10000 個用戶,你將會有 10000+ 行在 auth.php 文件中,並且每次都加載它們。

如果你有 100000 用戶 程序就會死掉了...

因為它 每次 都被覆蓋!!!


 

解決方法?


 

就像文檔中提到的那樣,如果你沒有幾個良好的策略,最好不要在多余幾百用戶的項目上使用 CPhpAuthManager。

但是當你的層次很簡單,如下:

禁止,嘉賓,用戶,版主,管理員

大多數 網站都是這樣

您可以按照本規則,並輕松地處理一百萬用戶


 

規則


 

  1. 當不刪除用戶或修改行時從不 撤銷角色

  2. 只有當版主或管理員分配了用戶角色時才分配角色並執行 CPhpAuthManager::save 方法

  3. 不在 accessControl 中使用

'roles'=>array('user')

假如你的用戶表中有角色字段

被禁止的規則將取代您原來的授權,沒必要這麼做,只需禁止未登錄的用戶

怎麼使用 @ 來替換 'roles'=>array('user') 方式

'users' => array('@')

對於

'roles'=>array('someROle')

對版主和管理員使用

結論

如果你遵循這個規則,如果你用一百萬用戶,你大致會有100個版主和幾個管理員對於 CPhpAuthManager 這只是小意思.

你只需要記住每一個角色的分配都將向 auth.php 文件添加行,並每次都會加載它.


 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved