|
1 | 1 | # A2Workspace/Laravel-JWT |
2 | 2 |
|
3 | | -一個隨開即用的 API 認證服務。 |
| 3 | +一個幾乎零配置的 API 認證服務。 |
4 | 4 |
|
5 | | -此套件是基於 [tymon/jwt-auth](https://github.com/tymondesigns/jwt-auth) 的包裝,並提供一個簡易的 `AuthenticatesUsers` 特性方便擴充。 |
| 5 | +此套件是基於 [php-open-source-saver/jwt-auth](https://github.com/PHP-Open-Source-Saver/jwt-auth/) 的包裝,並提供一個簡易的 `AuthenticatesUsers` 特性方便擴充。 |
6 | 6 |
|
7 | | -此套件相容於 **Nuxt** 的 `auth-nuxt` 模組。如何設定請參考 [# Nuxt 登入](#Nuxt-登入) |
| 7 | +特性: |
| 8 | +- 支援多使用者模型 |
| 9 | +- 相容 **Nuxt.js** 的 `auth-nuxt`。如何設定請參考 [# Nuxt 登入](#Nuxt-登入) |
8 | 10 |
|
9 | 11 |
|
10 | 12 | ## 安裝 |
11 | | -此套件尚未發布到 **Packagist** 需透過下列方法安裝: |
| 13 | +執行下列命令透過 **composer** 引入到你的 **Laravel** 專案: |
12 | 14 |
|
13 | | -``` |
14 | | -composer config repositories.a2workspace/laravel-jwt vcs https://github.com/A2Workspace/laravel-jwt.git |
15 | | -composer require "a2workspace/laravel-jwt:*" |
| 15 | +```bash |
| 16 | +composer require a2workspace/laravel-jwt |
16 | 17 | ``` |
17 | 18 |
|
18 | | -接著,你應該執行 `laravel-jwt:install` Artisan 指令來進行安裝。 |
19 | | -該指令會生成設定檔與 JWT 密鑰。 |
| 19 | +接著,執行 `laravel-jwt:install` Artisan 指令來進行安裝。 |
| 20 | +該指令會生成設定檔,並注入 `JWT_SECRET` 到 `.env` 中。 |
20 | 21 |
|
21 | | -``` |
| 22 | +```bash |
22 | 23 | php artisan laravel-jwt:install |
23 | 24 | ``` |
24 | 25 |
|
25 | 26 | 現在應該會有個 `config/jwt.php` 檔案。 |
26 | 27 |
|
| 28 | +----- |
27 | 29 |
|
28 | 30 | ## 快速開始 |
29 | 31 |
|
@@ -125,15 +127,63 @@ Route::middleware('auth:api')->get('/auth/user', function (Request $request) { |
125 | 127 |
|
126 | 128 | ``` |
127 | 129 |
|
128 | | -## 自訂認證控制器 |
| 130 | +----- |
129 | 131 |
|
130 | | -`A2Workspace\LaravelJwt\AuthenticatesUsers` 提供了 JWT 登入認證所需的所有方法,僅需要在控制器中使用該特性,並註冊到專案的路由檔案。 |
| 132 | +## 客製化認證控制器 |
131 | 133 |
|
| 134 | +這裡告訴你如何編寫自己的認證控制器,你可以參考 [A2Workspace/laravel-social-entry-demo](https://github.com/A2Workspace/laravel-social-entry-demo/blob/master/app/Http/Controllers) 中如何配置多使用者模型認證。 |
| 135 | + |
| 136 | +一個簡易範例: |
132 | 137 | ```php |
133 | 138 | <?php |
134 | 139 |
|
135 | 140 | namespace App\Http\Controllers; |
136 | 141 |
|
| 142 | +use App\Http\Controllers\Controller; |
| 143 | +use App\Http\Resources\AdminResource; |
| 144 | +use A2Workspace\LaravelJwt\AuthenticatesUsers; |
| 145 | + |
| 146 | +class AuthController extends Controller |
| 147 | +{ |
| 148 | + use AuthenticatesUsers; |
| 149 | + |
| 150 | + /** |
| 151 | + * 回傳認證守衛 |
| 152 | + * |
| 153 | + * @return \PHPOpenSourceSaver\JWTAuth\JWTGuard |
| 154 | + */ |
| 155 | + protected function guard(): JWTGuard |
| 156 | + { |
| 157 | + return Auth::guard('admin'); |
| 158 | + } |
| 159 | + |
| 160 | + /** |
| 161 | + * 取得驗證使用者名稱的欄位 |
| 162 | + * |
| 163 | + * @return string |
| 164 | + */ |
| 165 | + protected function username() |
| 166 | + { |
| 167 | + return 'account'; |
| 168 | + } |
| 169 | + |
| 170 | + /** |
| 171 | + * {@inheritDoc} |
| 172 | + */ |
| 173 | + public function me(Request $request) |
| 174 | + { |
| 175 | + return new AdminResource($request->user()); |
| 176 | + } |
| 177 | +} |
| 178 | +``` |
| 179 | + |
| 180 | +### 引入認證特性到控制器中 |
| 181 | + |
| 182 | +`A2Workspace\LaravelJwt\AuthenticatesUsers` 提供了 JWT 登入認證所需的所有方法,僅需要在控制器中使用該特性,並註冊到專案的路由檔案。 |
| 183 | + |
| 184 | +```php |
| 185 | +namespace App\Http\Controllers; |
| 186 | + |
137 | 187 | use App\Http\Controllers\Controller; |
138 | 188 | use A2Workspace\LaravelJwt\AuthenticatesUsers; |
139 | 189 |
|
@@ -199,6 +249,8 @@ Route::get('/auth/user', 'AuthController@me'); |
199 | 249 |
|
200 | 250 | *注意: 當使用自訂控制器時,就不需要在 `App\Providers\AuthServiceProvider` 中重複註冊 `LaravelJwt:routes` 了。* |
201 | 251 |
|
| 252 | +----- |
| 253 | + |
202 | 254 | ## Nuxt 登入 |
203 | 255 |
|
204 | 256 | 此套件相容於 **Nuxt** 的 `auth-nuxt` 模組中的 `Laravel JWT` ([參考這裡](https://auth.nuxtjs.org/providers/laravel-jwt))。 |
|
0 commit comments