当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

撰寫你自己的驅动 - Auth 套件

优质
小牛编辑
118浏览
2023-12-01

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'),