Confide提供了認證模塊,包含了登錄、注冊、退出、密碼重置等功能。
項目地址
> https://github.com/zizaco/confide `暫時未支持Laravel 5`
英文通讀水平有限,記下為妙,文檔瞎翻如下(意譯):
Confide針對Laravel提供了全套的身份驗證解決方案,它可以減少涉及用戶管理的重復工作。包含創建賬戶,登陸,登出,E-MAIL驗證密碼重置等有用的功能。
Confide的目標是簡單易用,快速配置和靈活使用。
> 注意:如果你使用的是MongoDB,請使用Confide Mongo
> https://github.com/Zizaco/confide-mongo
## 產品特點:
#### 當前:
1. 賬號確認(通過確認鏈接)。
2. 密碼確認(發送一封帶有重設密碼鏈接的EMAIL)。
3. 簡單方便的創建登陸,注冊和密碼重設的表單。
4. 為登陸,注冊,密碼重設,確認等生成路由。
5. 生成一個可定制的控制器,包含了基礎的用戶賬戶行為。
6. 包含一組用于幫助解決用戶基本特性的方法。
7. 集成了`Laravel Auth`和`Reminders component/configs`.
8. 用戶驗證。
9. 登陸控制。
10. 驗證后跳轉至先前的路由。
11. 檢查注冊中獨特的email和username。
如果你需要的是用戶角色和權限控制請看`Entrust`
> 警告: 默認會發送一封確認郵件用于驗證用戶的郵件地址。在confide的config文件可以改變這個設置,將signup_email和 signup_confirm設置為false,就不必發送郵件并驗證郵件地址了。
## 快速開始
#### 需要的設置
在composer.json文件的require鍵中加入如下代碼
"zizaco/confide": "~4.3@dev"
#### 運行Composer更新命令
$ composer update
將 `Zizaco\Confide\ServiceProvider` 添加到 `app/config/app.php` 的 `providers` 數組的后面
~~~
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Zizaco\Confide\ServiceProvider',
),
~~~
將 `'Confide' => 'Zizaco\Confide\Facade'` 加入到 `app/config/app.php` 的 `aliases` 數組的末尾
~~~
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
...
'Confide' => 'Zizaco\Confide\Facade',
),
~~~
#### 配置
在`app/config/auth.php`中設置屬性值。這個值將被confide用于生成數據庫遷移以及生成工資器和路由。
在`config/mail.php`設置右鍵地址和名稱,他們將被用于向用戶發送賬戶驗證和密碼重設右鍵。
#### 用戶模型
現在生成Confide遷移和密碼提醒表的遷移:
~~~
$ php artisan confide:migration
~~~
將生成_confide_setup_users_table.php的遷移。你可以使用 artisan migrate 命令運行它:
~~~
$ php artisan migrate
~~~
將會生成一張包含`email`, `password`, `remember_token`, `confirmation_code` 和`confirmed `列的表,這些都是Confide需要使用的默認字段。你還可以自由的向此表添加更多的字段。
將你在 app/models/User.php 中的用戶模型變成:
~~~
<?php
use Zizaco\Confide\ConfideUser;
use Zizaco\Confide\ConfideUserInterface;
class User extends Eloquent implements ConfideUserInterface {
use ConfideUser;
}
?>
~~~
`ConfideUser`特性將會妥善的處理用戶模型的的一些行為。
#### 裝儲默認的訪問
最后,你可以為confide裝儲默認的控制器, 知識庫以及默認路由.
~~~
$ php artisan confide:controller
$ php artisan confide:routes
~~~
別忘記運行以下命令對自動加載進行優化
~~~
$ composer dump-autoload
~~~
準備好出發了嗎. 使用 `http://yourapp/users/create` 創建你的第一用戶,打開 `app/routes.php` 查看可用的路由。你需要確認最新創建的用戶(通過”`reaching`”他自身的`confirm`()方法),除此之外你可以再配置中禁用登陸要求驗證的配置(看下面)。
## 詳細使用說明
#### 基本設置:
1. `config/database.php` 中配置的數據庫連接需要正確地運行。
2. `config/auth.php` 中的模型和表的名稱要正確,因為會被Confide一直使用(特別是生成遷移和控制器)。
3. `from` 配置在 `config/mail.php` 中。
#### 配置:
1. `‘Zizaco\Confide\ServiceProvider’` 和 `‘Confide’ => ‘Zizaco\Confide\Facade’` 分別加入 `config/app.php` 的 `‘providers’` 和 d 數組里。
2. 用戶模型 (在 `config/auth.php` 中相同名稱) 需要實現 `Zizaco\Confide\ConfideUserInterface` 接口. 這樣可以使 `forgotPassword()` and `confirm()` 這些方法變可用。
#### 可選步驟:
1. 可選地你可以在你的用戶模型使用 `Zizaco\Confide\ConfideUser` 特性。這個特性將會為用戶啟用`”confide’s default”`,這會節約很多時間。如果你期待更多的定制你可以編寫自己的代碼。
2. 使用`Confide facade`可以輕松的使用 `makeLoginForm()` 和 `makeSignupForm()` 生成`login`和`signup`表單。你可以使用如下代碼展現你的表單`{{ Confide::makeLoginForm()->render() }}`.
3. 如果需要從Confide模板生成控制器和知識庫,可以使用 `$ php artisan confide:controller` 命令。如果當前已經存在相同名稱的控制器,不會覆蓋。
4. 使用 `$ php artisan confide:routes` 可以從Confide模板生成匹配控制器的路由。別擔心,你的路由不會被覆蓋。
## 高級
#### UserRepository類
你可能已經注意到當生成控制器的時候同樣會創建一個`UserRepository`類。這個類包含一些不屬于”`controoler`”目標的代碼,將你的類變的更干凈和更有可測試性。如果你還是不明白這個類為什么不存在,我推薦你使用”`Creating flexible Controllers in Laravel 4 using Repositories`”(在Laravel4中使用倉庫生成彈性控制器)搜索google。
#### 使用自定義的類,表以及模型名稱
你可以修改`config/auth.php`文件中關聯用戶的的模型名稱。Confide目前使用在該配置文件中的值。
在從controller模板生成控制器時可以使用`–name`參數改變控制器名稱。
~~~
$ php artisan confide:controller --name=Employee
~~~
結果會是 EmployeeController
接著,當生成路由的時候, 你需要使用 `–controller` 參數來匹配已經存在的controller.
~~~
$ php artisan confide:routes --controller=Employee
~~~
你也可以使用帶namespace命名空間的控制器
~~~
$ php artisan confide:controller --name=MyProject\\Auth\\User
~~~
> 警告: 在bash中,你需要使用雙反斜杠符號’\\’ 。會得到這樣的 MyProject\Auth\UserController 路徑。當然生成文件將加入到命名空間等同的文件目錄(原諒我不會翻譯這句)。
#### 使用自定義表單和郵箱
首先,發布配置文件:
~~~
$ php artisan config:publish zizaco/confide
~~~
然后在`app/config/packages/zizaco/confide/config.php`文件中修改視圖名稱。
#### 比對
要比對你的用戶表你還需要添加password_confirmation和confirmation_code字段。例如
~~~
class UsersTableSeeder extends Seeder {
public function run() {
$user = new User;
$user->email = 'johndoe@site.dev';
$user->password = 'foo_bar_1234';
$user->password_confirmation = 'foo_bar_1234';
$user->confirmation_code = md5(uniqid(mt_rand(), true));
$user->confirmed = 1;
if(! $user->save()) {
Log::info('Unable to create user '.$user->email, (array)$user->errors());
} else {
Log::info('Created user '.$user->email);
}
}
}
~~~
#### 自定義用戶驗證
你可以通過創建一個類實行你自己的驗證器,它需要實現了`UserValidatorInterface`接口和注冊為類似”`confide.user_validator`”的類。
例如,創建你自己的驗證器類:
~~~
// app/models/MyOwnValidator.php
class MyOwnValidator implements UserValidatorInterface {
public function validate(ConfideUserInterface $user) {
unset($user->password_confirmation);
return true; // If the user valid
}
}
~~~
然后在IoC容器里注冊為 “confide.user_validator”
~~~
// app/start/global.php
//...
App::bind('confide.user_validator', 'MyOwnValidator');
~~~
同樣的,在保存之前別忘記你的驗證器需要復原’password_confirmation’屬性。
#### 給”make”方法傳遞額外的信息
如果你想給已經渲染的表單傳遞額外的參數,你可以使用另外一種語法來實現這一目標。
#### 替代使用make方法:
~~~
Confide::makeResetPasswordForm($token):
~~~
你可以使用:
~~~
View::make(Config::get('confide::reset_password_form'))
->with('token', $token);
~~~
它產生相同的輸出,但是你可以像其它視圖一樣使用width來添加更多輸入。
#### RESTful controller
如果你想生成一個 `RESTful controller` 你可以使用 `–restful` 或 `-r` 參數項。
~~~
$ php artisan confide:controller --restful
~~~
將會得到一個 RESTful controller
接著生成路由的時候,需要使用–resful參數來匹配已經存在的路由。
~~~
$ php artisan confide:routes --restful
~~~
#### 用戶角色和權限
為了使Confide的代碼量不至于膨脹,角色和權限使用另外一個擴展包:Entrust
`Entrust`和`Confide`是一對好基友。
~~~
See Entrust - https://github.com/Zizaco/entrust
~~~
在登陸后跳轉至預設好的路由
在定義你的篩選器的時候你需要使用`Redirect::guest(‘users/login’)`。例如:
~~~
// filters.php
Route::filter('auth', function () {
// If the user is not logged in 如果用戶沒登陸
if (Auth::guest()) {
return Redirect::guest('users/login');
}
});
// Only authenticated users will be able to access routes that begins with
// 'admin'. Ex: 'admin/posts', 'admin/categories'.
Route::when('admin*', 'auth');
~~~
或者,你在使用Entrust :)
~~~
// filters.php
Entrust::routeNeedsRole('admin*', 'Admin', function () {
return Redirect::guest('users/login');
});
~~~
最終,如果你在控制器的`users/login function`中使用了 `Redirect:intended(‘a/default/url/here’)`,成功登陸后會默認跳轉。生成的控制器已經完成了這些。
#### 故障排除
> [2014-07-18 01:13:15] production.ERROR: exception ‘Illuminate\Database\QueryException’ with message ‘SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘password_confirmation’ in ‘field list’ (SQL: insert into users …
在發送到數據庫前需要將`password_confirmation`從項目中移除。保證你的用戶模型實現了`ConfideUserInterface`接口,如上所述他使用了`ConfideUser `特性。除此之外,如果你使用了自定義的驗證器,你需要在保存用戶前復原`password_confirmation`。
我需要我的用戶有 “username”
當生成confide和controller遷移的時候使用–username參數。
~~~
$ php artisan confide:migration --username
...
$ php artisan confide:controller --username
~~~
如果你想讓username變成必填項,你需要擴展UserValidator和重寫$rules屬性。
當我嘗試登陸的時候我收到 “Your account may not be confirmed” (你的賬號沒有確認)
你需要驗證最新創建的用戶 (by “reaching” its confirm() method),除此之外你可以再配置文件中取消必須驗證的配置。
你可以很輕松的驗證用戶,通過使用Laravel的artisan修補工具。
我沒法生成帶有命名空間的控制器
在bash中,你需要使用雙反斜杠符號’\\’。
~~~
$ php artisan confide:controller --name=MyProject\\Auth\\User
~~~
用戶不用驗證賬號就能登錄
如果你想只有驗證的用戶才能登錄,在你的UserController中,用`logAttempt( $input, true )`代替用`logAttempt( $input )`。第二個參數代表”`confirmed_only`”。
當我運行`composer update`更新的時候,我的應用崩潰了
Confide 4.0.0 是一個巨大的所有代碼都被重寫的更新。一些類改變,生成器被改進為了匹配某些更好的實務(比如代碼庫和分開驗證器類)。查看下面的Release Notes。
如果你有一個遺產項目使用了較老的Confide版本。別擔心,你永遠可以在composer.json指定一個早先的版本。
例如: `“zizaco/confide”: “~3.2″`將會避免下載4.0版本。只會下載3.2終極版。
* * * * *
原文地址:[http://www.zhangxihai.cn/archives/160](http://www.zhangxihai.cn/archives/160)
- 前言
- 發行說明/L5新特性
- 升級向導
- 升級到 5.0.16
- 從 4.2 升級到 5.0
- 從 4.1 升級到 4.2
- 從 4.1.x 升級到 4.1.29
- 從 4.1.25 升級到 4.1.26
- 從 4.0 升級到 4.1
- 貢獻向導
- 環境配置
- 安裝
- 配置
- 基本功能
- 路由
- 基本路由
- CSRF 保護
- 方法欺騙
- 路由參數
- 命名路由
- 路由群組
- 路由模型綁定
- 拋出 404 錯誤
- 中間件
- 建立中間件
- 注冊中間件
- 可終止中間件
- 控制器
- 基礎控制器
- 控制器中間件
- 隱式控制器
- RESTful 資源控制器
- 請求
- 取得請求實例
- 取得輸入數據
- 舊輸入數據
- Cookies
- 上傳文件
- 其他的請求信息
- 響應
- 基本響應
- 重定向
- 其他響應
- 響應宏
- 系統架構
- 服務提供者
- 基本提供者例子
- 注冊提供者
- 緩載提供者
- 服務容器
- 基本用法
- 將接口綁定到實現
- 上下文綁定
- 標簽
- 實際應用
- 容器事件
- 參考:理解PHP 依賴注入|Laravel IoC容器
- Contracts
- 為什么用 Contracts
- Contract 參考
- 如何使用 Contracts
- Facades
- 實際用法
- 建立 Facades
- 模擬 Facades
- Facade 類參考
- 請求的生命周期
- 生命周期概要
- 聚焦于服務提供者
- 應用程序結構
- 根目錄
- App 目錄
- 為應用程序配置命名空間
- 系統服務
- 認證
- 用戶認證
- 取得經過認證的用戶
- 保護路由
- HTTP 基本認證
- 忘記密碼與重設
- 第三方登陸認證
- 交易
- 配置文件
- 訂購方案
- 一次性付款
- Single Charges
- 免信用卡試用
- 訂購轉換
- 訂購數量
- 取消訂購
- 恢復訂購
- 確認訂購狀態
- 處理失敗訂閱
- 處理其它 Stripe Webhooks
- 收據
- 緩存
- 配置
- 緩存用法
- 遞增與遞減
- 緩存標簽
- 緩存事件
- 數據庫緩存
- 集合
- Command Bus
- 建立命令
- 調用命令
- 命令隊列
- 命令管道
- 核心擴展
- 管理者和工廠
- 緩存
- Session
- 認證
- 基于服務容器的擴展
- Laravel Elixir
- 安裝與配置
- 使用方式
- Gulp
- Custom Tasks and Extensions
- 加密
- Envoy 任務執行器
- 安裝
- 執行任務
- 多服務器
- 并行執行
- 任務宏
- 通知
- 更新 Envoy
- 錯誤與日志
- 配置
- 錯誤處理
- HTTP 異常
- 日志
- 事件
- 基本用法
- 事件處理隊列
- 事件訂閱者
- 文件系統與云存儲
- 配置文件
- 基本用法
- 自定義文件系統
- 哈希
- 基本用法
- 輔助方法
- 數組
- 路徑
- 路由
- 字符串
- 網址(URL)
- 其他
- 本地化
- 語言文件
- 基本用法
- 復數
- 驗證
- 覆寫擴展包的語言文件
- 郵件
- 配置
- 基本用法
- 內嵌附件
- 郵件隊列
- 郵件與本地端開發
- 擴展包開發
- 視圖
- 語言
- 配置文件
- 公共資源
- 發布分類文件
- 路由
- 分頁
- 配置
- 使用
- 追加分頁鏈接
- 轉換至 JSON
- 隊列
- 設置
- 基本用法
- 隊列閉包
- 執行一個隊列監聽
- 常駐隊列處理器
- 推送隊列
- 已失敗的工作
- 會話
- 配置
- 使用 Session
- 暫存數據(Flash Data)
- 數據庫 Sessions
- Session 驅動
- 模板
- Blade 模板
- Blade 控制語法結構
- Blade 擴展
- 參考:@section與@yield 介紹
- 單元測試
- 定義并執行測試
- 測試環境
- 從測試調用路由
- 模擬 Facades
- 框架 Assertions
- 輔助方法
- 重置應用程序
- 表單驗證
- 基本用法
- 控制器驗證
- 表單請求驗證
- 使用錯誤信息
- 錯誤信息 & 視圖
- 可用驗證規則
- 條件驗證規則
- 自定義錯誤信息
- 自定義驗證規則
- 數據庫
- 使用基礎
- 配置
- 讀取/寫入連接
- 執行查找
- 數據庫事務處理
- 獲取連接
- 日志記錄
- 查詢構造器
- Selects
- Joins
- 高級 Wheres
- 聚合
- 原生表達式
- 添加
- 更新
- 刪除
- Unions
- 悲觀鎖定 (Pessimistic Locking)
- Eloquent ORM
- 基本用法
- 批量賦值
- 新增,更新,刪除
- 軟刪除
- 時間戳
- 范圍查詢
- Global Scopes
- 關聯
- 關聯查詢
- 預載入
- 新增關聯模型
- 更新上層時間戳
- 使用樞紐表
- 集合
- 獲取器和修改器
- 日期轉換器
- 屬性類型轉換
- 模型事件
- 模型觀察者
- 模型 URL 生成
- 轉換成數組 / JSON
- 結構生成器
- 建立與刪除數據表
- 加入字段
- 修改字段
- 修改字段名稱
- 移除字段
- 檢查是否存在
- 加入索引
- 外鍵
- 移除索引
- 移除時間戳記和軟刪除
- 保存引擎
- 遷移和數據填充
- 建立遷移文件
- 執行遷移
- 回滾遷移
- 數據填充
- Redis
- 配置
- 使用方式
- 管道
- 開發包
- Confide 用戶身份認證
- Entrust 權限管理
- Shoppingcart 購物車
- Genertators 代碼生成工具
- IDE Helper IDE助手
- Artisan 命令行工具
- 概覽
- 用法
- 在命令行接口以外的地方調用命令
- 定時調用 Artisan 命令
- 開發
- 建立自定義命令
- 注冊自定義命令