分享Laravel Passport 踩坑日記
以前的專案大多使用 DingoAPI JWT-auth 實現的 API 認證,Laravel 雖然在很早就出了 Passport ,但一直沒有怎麼關注。 今天擼了一把Passport ,雖然遇到不少坑,但是趕腳這個東西還是蠻好用的~
坑1:我暫時只想透過帳號密碼取得
Passport 一出生就自帶了很多的路由。 。 but,這些東東大部分對我是真的沒用啊解決方案:在你的
AuthServiceProvider 裡重新定義:
Passport::routes(function (RouteRegistrar $router) { $router->forAccessTokens(); }, ['prefix' => 'api']);
# : 註冊帳號時,如何手動產生
Token ?
jwt-auth 的JWTAuth::fromUser($user); 可以很簡單的產生
token,但在Passport 裡似乎沒有現成的方法。
解決方案:註冊完帳號後,再一次主動請求 oauth/token
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()){
return response()->json($validator->errors());
}
event(new Registered($user = $this->create($request->all())));
$client = \DB::table(&#39;oauth_clients&#39;)->where(&#39;password_client&#39;, 1)->first();
$request->request->add([
&#39;username&#39; => $user->email,
&#39;password&#39; => $request->password,
&#39;grant_type&#39; => &#39;password&#39;,
&#39;client_id&#39; => $client->id,
&#39;client_secret&#39; => $client->secret,
&#39;scope&#39; => &#39;*&#39;
]);
$proxy = Request::create(
&#39;oauth/token&#39;,
&#39;POST&#39;
);
return Route::dispatch($proxy);
}</pre><div class="contentsignin">登入後複製</div></div>
執行,獲得回傳
{ "token_type": "Bearer", "expires_in": 1296000, "access_token": "xxx", "refresh_token": "xxx" }
完美解決。
坑3:我想要使用手機號登入Passport 其實已經提供了動態修改使用者登入的接口,只不過沒有在文件裡寫出來
解決方案:在你的User Model 裡增加如下方法public function findForPassport($login) {
return User::orWhere('email', $login)->orWhere('mobile', $login)->first();
}
登入後複製坑4: 當使用錯誤的token
時, passport 總是會跳到login 方法
查看原始碼發現passport 用的是web
auth 中間件,難怪如此
在你的請求頭裡增加Accept: application/json ,問題解決
例如:
以上是分享Laravel Passport 踩坑日記的詳細內容。更多資訊請關注PHP中文網其他相關文章!
public function findForPassport($login) { return User::orWhere('email', $login)->orWhere('mobile', $login)->first(); }
時, passport 總是會跳到login 方法
auth 中間件,難怪如此 ,問題解決
例如:

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在dcatadmin(laravel-admin)中如何實現自定義點擊添加數據的表格功能在使用dcat...

Laravel郵件發送失敗時的退信代碼獲取方法在使用Laravel開發應用時,經常會遇到需要發送驗證碼的情況。而在實�...

Laravel框架中Redis連接的共享與select方法的影響在使用Laravel框架和Redis時,開發者可能會遇到一個問題:通過配置...

在Laravel多租戶擴展包stancl/tenancy中自定義租戶數據庫連接使用Laravel多租戶擴展包stancl/tenancy構建多租戶應用時,...

LaravelEloquent模型檢索:輕鬆獲取數據庫數據EloquentORM提供了簡潔易懂的方式來操作數據庫。本文將詳細介紹各種Eloquent模型檢索技巧,助您高效地從數據庫中獲取數據。 1.獲取所有記錄使用all()方法可以獲取數據庫表中的所有記錄:useApp\Models\Post;$posts=Post::all();這將返回一個集合(Collection)。您可以使用foreach循環或其他集合方法訪問數據:foreach($postsas$post){echo$post->

在Laravel6項目中如何檢查Redis連接的有效性是一個常見的問題,特別是在項目依賴於Redis進行業務處理時。以下是...

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

Laravel數據庫遷移過程中出現類重複定義問題在使用Laravel框架進行數據庫遷移時,開發者可能會遇到“類已使用�...
