Auth 套件

Auth 套件在 Fuel 裡提供一个标准化的認證介面。 这使得我們的使用者能编寫自己的驅动程序,并且輕鬆地将新的驅动程序與舊的程式码整合, 以保持基本方法一致。

撰寫你自己的驅动

撰寫驅动可以兩種方式達成。透過擴充 Auth 驅动类別以從零開始建立一个新驅动, 或擴充一个存在的类別并在需要的地方變更它們。

一个 Auth 驅动包含三種类型的类別一起運作,这些是:

  • Login(Auth_Login_Driver)。
  • Group(Auth_Group_Driver)。
  • Acl(Auth_Acl_Driver)。

擴充認證类別

像这樣擴充这些类別:

<?php

class Auth_Login_Mydriver extends \Auth\Auth_Login_Driver
{

	// 在驅动类別裡實现所有需要的函式和變数定義。

}

/* End of file app/classes/auth/login/mydriver.php */

實现函式

當擴充 Auth 驅动类別時,注意每一个需要實现的函式的預期回傳值。 每一个方法提供一个範例,如此你知道需要回傳什么。下面是一个範例:

/**
 * 取得目前登入使用者的 ID
 * 以此形式:array(driver_id, user_id)
 *
 * @return  array
 */
abstract public function get_user_id();

上面的程式码告訴你每一个驅动都應該有 get_user_id 函式。 就像所有你擴充的有抽象函式的类別,这些函式必須在擴充的类別中被定義。 此函式的回傳类型提供在註解中,在这裡是 array(driver_id, user_id)。 为了让你的驅动與其他驅动并肩合作, 確認你回傳正確的值或你的驅动中斷協定。

这裡是相同的函式來自 Simpleauth 驅动的實现。

/**
 * 取得使用者的 ID
 *
 * @return  Array  包含此驅动 ID &使用者 ID
 */
public function get_user_id()
{
	if (empty($this->user))
	{
		return false;
	}

	return array($this->id, (int) $this->user['id']);
}

一旦你让新驅动的一切都到位,取代或添加到 auth 配置

// 在 config/auth.php 中的陣列

// 添加做为第二个驅动
'driver' => array('Simpleauth', 'Mydriver'),

// 或取代存在的驅动
'driver' => array('Mydriver'),