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

Login - 驅动类型 - Auth 套件

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

Auth 套件在 Fuel 里提供一个标准化的认证介面。 这使得我们的使用者能编写自己的驱动程序,并且轻鬆地将新的驱动程序与旧的程式码整合, 以保持基本方法一致。

Auth_Login_Driver

此驱动是所有 Auth 登入驱动的基础类别。它被定义为一个抽象类别, 该类别包含了通用于所有登入驱动的所有方法, 以及定义给任何登入驱动必须实现的所有抽象方法。

驱动配置

一个登入驱动可以载入它所依赖的额外驱动。一般情况下,这些是 Group 驱动。 但你的实现情况可以是引进和使用自订的驱动类型。要做到这一点,添加此结构到你的驱动类别:

// 当载入此登入驱动时自动载入 Simplegroup 群组驱动
// 这也定义了此驱动有额外的使用者纪录栏位 getter
	protected $config = array(
		'drivers' => array('group' => array('Simplegroup')),
		'additional_fields' => array('profile_fields'),
	);

静态介面

为了易于使用,Auth 套件在登入驱动的公开方法提供一个静态介面。 因为这个原因,登入基础驱动也定义 member()has_access() 方法, 它提供了在群组和 ACL 驱动中静态存取这些方法。

使用静态介面,你能做到

// 回传 'simpleauth'
$id = Auth::get_id();

来代替

// 回传 'simpleauth'
$id = Auth::instance()->get_id();

这只在 Auth 配置中的 "verify_multiple_logins" 设为 false 时运作, 因为你不能对映一个静态介面到多个活跃的登入驱动程序!

通用方法

通用方法被定义在登入基础驱动,而且能透过扩充到达所有的 Auth 登入驱动。这些方法提供功能来建立和取回实例、设定和取得配置值、 以及密码杂凑和对 ACLGroup 驱动存取的通用方法。

定义在类别中而没记录在此的方法是内部使用,而且不应该直接被呼叫。

get_id()

回传驱动的唯一 ID。这可被用于识别驱动,或用来选择一个特定的驱动实例。

静态
参数
回传驱动 ID 字串。
範例
// 回传 'simpleauth'
$id = Auth::instance('simpleauth')->get_id();

set_config($key, $value)

设定一个驱动配置值。

静态
参数
参数预设描述
$key必要配置键名
$value必要此配置键的值
回传
範例
// 设定一个配置值
Auth::instance()->set_config('key', 'value');

get_config($key, $default = null)

取得一个驱动配置值。

静态
参数
参数预设描述
$key必要配置键名
$defaultnull如果请求的键不存在时要回传的预设值
回传混合
範例
// 取得一个配置值,如果不存在回传 false
$key = Auth::instance()->get_config('key', false);

guest_login()

回传是否驱动支援访客登入(一个未认证的访客使用者)。

静态
参数
回传布林
範例
// 检查预设的实例是否支援访客
if (Auth::instance()->guest_login())
{
	// 此驱动支援访客登入!
}

预设情况下,此方法回传 'false'。如果你的驱动有支援访客登入, 在你的驱动类别中覆盖载入此方法。

get_user_array(Array $additional_fields = array())

回传一个描述目前登入使用者的阵列,总是包含至少一个显示名称和一个 email 地址。在驱动中可配置额外栏位或透过 阵列请求,但它们必须在该驱动内有一个 get_user_fieldname() 方法是可取得的。

静态
参数
参数预设描述
$additional_fieldsarray()要取回的栏位名称的阵列
回传阵列
範例
// 在预设的实例呼叫此方法
$user = Auth::instance()->get_user_array();

// 在指定的实例呼叫此方法
$user = Auth::instance('simpleauth')->get_user_array();

// 静态呼叫(如果 "verify_multiple_logins" 设为 false)
$user = Auth::get_user_array();

你可以在驱动配置阵列中定义 'additional_fields',以在你呼叫此方法时让它们预设被包含。

hash_password($password)

回传一个所给密码的 base64 编码杂凑值。此方法使用非常安全的 pbkdf2 杂凑演算法。

静态
参数
参数预设描述
$password必要要杂凑的使用者密码
回传字串
範例
// 杂凑一个使用者密码
$password = Auth::instance()->hash_password($password);

抽象方法

你所开发的每个登入驱动必须提供这些所有的方法,且必须回传此处记录的值。

perform_check()

内部类别方法用来检查目前使用者是否有有效的 session。由你决定你的驱动要如何确定它。

静态
参数
回传布林,true 如果有一个有效使用者 session,如果没有则 false

此方法是藉由 Auth::check() 呼叫,它不应该被应用程序直接呼叫。

validate_user()

validate_user 方法验证一个登入请求。由你决定你的驱动要如何动作。

静态
参数
回传混合。它应该回传 false 如果使用者未通过验证。任何被计算为 true 的值被认为是有效的。

如果它不是 false,应用程序不应假设关于回传的值!

login()

login 方法执行一个登入请求。它应该呼叫 validate_user() 来验证该请求。由你决定你的驱动要如何动作。

静态
参数
回传布林。如果登入成功回传 true,否则是 false

如果你的驱动有支援访客登入,它必须在回传 false 之前设定该访客。

logout()

logout 方法登出目前登入的使用者。由你决定你的驱动要如何动作。

静态
参数
回传布林。如果登出成功回传 true,否则是 false

如果你的驱动有支援访客登入,它必须在成功登出之后,设定该访客为目前使用者。

get_user_id()

get_user_id 方法回传包含驱动 ID 值和目前登入使用者 ID 的阵列结构。

静态
参数
回传混合。如果使用者是登入的,回传一个 array(driver_id, user_id) 形式的阵列,否则是 false

如果你的驱动有支援访客登入,它必须回传有(虚拟)user_id 或你的访客的阵列,而不是 false

get_groups()

get_groups 方法回传指派给资料者的使用者群组。

静态
参数
回传混合。如果使用者是登入的,回传一个 array(array(driver_id, group_id), array(driver_id, group_id), etc) 形式的阵列,否则是 false

如果你的驱动有支援访客登入,它必须回传你的访客使用者群组阵列,而非 false

get_email()

get_email 方法回传指派给目前登入的使用者 email 地址。

静态
参数
回传混合。如果使用者登入回传 email 地址,如果目前使用者没有定义 email 地址,或使用者没有登入回传 false

如果你的驱动有支援访客登入,别忘了回传 false 如果该访客没有定义一个 email 地址!

get_screen_name()

get_screen_name 方法回传目前登入的使用者显示名称。

静态
参数
回传混合。回传包含名称的字串,或 false 如果使用者没有登入。

如果你的驱动有支援访客登入,它必须回传访客显示名称,而非 false