2012-12-13 54 views
0

我正在開發一個項目,我正試圖對外部用戶羣實施身份驗證,這似乎是正常工作。kohana3.2中的多個Auth驅動程序

最近又增加了另一項要求,即有些人(不在上述基地中)需要能夠編輯部分頁面內容。首先想到的是爲單獨的少數編輯者啓用單獨的ORM /文件身份驗證驅動程序。

是否可以在Kohana 3.2中同時使用兩個Auth驅動程序?

回答

1

是的,您可以一次使用不同的驅動程序。只要創建另一個實例,而不是標準的單例:

// default Auth 
$config = Kohana::$config->load('auth'); 
$auth = new Auth($config); 
$user = $auth->get_user(); 
// special Auth for administration 
$config2 = Kohana::$config->load('admin_auth'); 
$auth2 = new Auth($config2); 
$admin = $auth2->get_user(); 

限制:

  1. 您必須使用不同的configs(driversession_key值必須不同)。請注意,某些設置是在類中定義的,不能通過配置進行更改(例如,「記住」名爲authautologin的cookie)。
  2. 你不能共享默認的ORM模型(Model_User,Model_Token,Model_Role),因爲它們的名字是硬編碼的。但是ORM驅動程序&可以使用文件驅動程序。
1

Kohana的Auth模塊本身不支持使用兩個驅動程序。

但是,您可以非常輕鬆地實現新驅動程序。您可以按照指示通過複製現有的驅動程序,並修改它,在這裏創建一個新的驅動程序:http://kohanaframework.org/3.3/guide/auth/driver/develop

簡單的事情將是把下面的邏輯在_login方法:

  1. 檢查用於有效登錄的外部用戶數據庫
  2. 如果外部用戶數據庫中存在有效的用戶,則返回true。
  3. 如果在外部用戶數據庫中沒有有效的用戶,請改爲檢查本地用戶數據庫。
  4. 如果用戶存在於本地數據庫中,則返回true。
+0

我已經有單獨的驅動程序,所以如果你不需要同時登錄這似乎是可行的解決方案。我只會將屬性is_external添加到其getter中 - 因此客戶將無法訪問編輯器部分,反之亦然。 – bjauy

+0

我仍在調查兩個自定義auth類的情況,它們來源於Auth並同時工作(所以在一個控制器中,您被驗證爲測試客戶,另一個作爲編輯器)。 – bjauy

相關問題