Auth 套件

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

简介

建立一个適合每一个人或每一个實作的 Auth 套件是不可能的。 做为一个框架我們不希望強迫你如何做 Auth, 但我們想要让你方便去建立你自己的或使用別人的成品,这就是为什么要有 Auth 套件。

介面包含三種类型的驅动(可被擴充到更多类型):logingroup & ACL。 登入驅动处理一个使用者登入,且能同時处理多个登入驅动。 例如一種情況是可以让使用者透過 Twitter 和本地使用者登入, 同時使用兩个登入驅动。

做为下一步,你可以使用一个群組驅动組合兩種类型的登入,該驅动不在乎你使用的类型。 最後但非最不重要的,你可以使用一个 ACL 驅动以給特定權限到那些群組。

上述僅僅是一个你可以如何使用它,而不是你 必須 如何使用它的範例。 閱讀下一段以了解那些方法是通用介面的一部份,以及那些会被特定驅动: 撰寫驅动

包含的驅动

Auth 套件配備兩套驅动提供本地存取、使用一个或多个資料庫表。

Simpleauth

正如名字所暗示的,这是一个基础驅动集。它使用一張資料庫表來儲存使用者資訊, 以及一个配置档案來儲存關於群組、角色、及 ACL 的資訊。它在使用者紀錄中的一个序列化陣列裡儲存使用者詮釋資料。 它沒有很多功能,但對大多数应用程序來說,它可以勝任。 記錄在 这裡

Ormauth

这个驅动集提供與 Simpleauth 驅动类似的功能,但儲存所有關於使用者、 群組、角色及權限的資訊在資料庫,并使用 ORM 模型來存取此資訊。除此之外, 它不在一个陣列中儲存使用者詮釋資料,而是獨立的資料表,使用 ORM 的 EAV 容器功能來存取它。 其 API 幾乎與 Simpleauth 相容,但不同的是,回傳使用者、群組或角色資料的方法, 现在回傳的是 ORM 物件而不是陣列。 記錄在 这裡

Auth 套件包含需要的迁移档案來建立这些驅动所需的資料表結構。 它使用 Auth 配置档案來確定要建立什么,所以首先你需要配置它。

支援的类別

除了完整的驅动集,Auth 套件也包含支援类別, 它提供額外功能給一个或全部驅动。

Opauth

Opauth 是一个多提供者認證的PHP框架,并且安装做为一个 composer 套件。 它提供了使用 OAuth 或 OpenID 通訊協議的通用認證,并擁有大量針對受歡迎的 OAuth 平台認證的现成策略, 如 Facebook、Twitter、Github、等。

包含在 Auth 套件中的 Opauth 驅动会是 Opauth 及(目前)不管是 Simpleauth 或 Ormauth 之間的介面, 以便你可以連結 OAuth 帳號到本地帳號,對 OAuth 帳號使用本地 ACL 、等。 記錄在 这裡

安装

Auth 套件包含在 Fuel 的下载,你所需要做的就是在你的配置中啟用它。

'always_load' => array(
	'packages' => array(
		'auth',
	),
),

配置

Auth 可以在 config/auth.php 档案配置,并使用以下的鍵:

參数 类型 預設 描述
driver 字串|陣列
array('Simpleauth')
要載入的登入驅动,第一个也会是 Auth::instance() 回傳的預設值。
verify_multiple_logins 布林
false
是否在一个驅动成功驗證後持續檢查登入, 这使得它可以在同一時間使用多種方式登入。
salt 字串
'put_your_salt_here'
使用於密码雜湊的鹽。
iterations 整数
10000
在密码雜湊处理(Auth 使用 PBKDF2)中的迭代数(對密码的「加密」数量)。 迭代次数越多意味著更安全的密码,但会使用更多時間。太多迭代可能会崩潰你的伺服器!

注意 'verify_multiple_logins' 是一个驅动層級的設定,對登入驅动來說沒有意義, 它也并不代表「允許一个使用者被多重登入」!

你的 auth 配置档案應該看起來像这樣:

<?php

return array(
	// 驅动程序
	'driver' => array('Simpleauth'),

	// 設定为 true 以允許多个登入
	'verify_multiple_logins' => true,

	// 出於安全原因,用你自己的鹽
	'salt' => 'Th1s=mY0Wn_$@|+',
);