Auth 套件
Auth 套件在 Fuel 裡提供一个标准化的認證介面。 这使得我們的使用者能编寫自己的驅动程序,并且輕鬆地将新的驅动程序與舊的程式码整合, 以保持基本方法一致。
简介
建立一个適合每一个人或每一个實作的 Auth 套件是不可能的。 做为一个框架我們不希望強迫你如何做 Auth, 但我們想要让你方便去建立你自己的或使用別人的成品,这就是为什么要有 Auth 套件。
介面包含三種类型的驅动(可被擴充到更多类型):login、 group & 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 | 字串|陣列 |
|
要載入的登入驅动,第一个也会是 Auth::instance() 回傳的預設值。 |
verify_multiple_logins | 布林 |
|
是否在一个驅动成功驗證後持續檢查登入, 这使得它可以在同一時間使用多種方式登入。 |
salt | 字串 |
|
使用於密码雜湊的鹽。 |
iterations | 整数 |
|
在密码雜湊处理(Auth 使用 PBKDF2)中的迭代数(對密码的「加密」数量)。 迭代次数越多意味著更安全的密码,但会使用更多時間。太多迭代可能会崩潰你的伺服器! |
注意 'verify_multiple_logins' 是一个驅动層級的設定,對登入驅动來說沒有意義, 它也并不代表「允許一个使用者被多重登入」!
你的 auth 配置档案應該看起來像这樣:
<?php
return array(
// 驅动程序
'driver' => array('Simpleauth'),
// 設定为 true 以允許多个登入
'verify_multiple_logins' => true,
// 出於安全原因,用你自己的鹽
'salt' => 'Th1s=mY0Wn_$@|+',
);