Laravel Socialite third-party login with JWT

更新於 發佈於 閱讀時間約 3 分鐘

使用者第三方登入如何發送JWT token呢?

以google登入為例,大致上邏輯會是這樣:


其中L12回傳的
$user = $this->google_data->where('g_id', '=', $userGoogleId)->get()->first();

若是DB已有user的資料,從DB table抓出目前登入的user row data,來產生token,並將token回傳給前端。
若沒有資料則把資料存到DB,一樣產生token回傳。

只不過範例中是用redirect的方式,把token帶在url,似乎是不太好,因為是前後端分離的狀況。

不過應該可以用Laravel的blade把token帶到view,然後這個view再想辦法傳給前端,或者用cookie/session來存,改天有機會再來分享。


後記:

改成這種方式,redirect -> to -> with,即可以產生一次性的session,將token存在session中。
return redirect()->to('http://xxxxx.com.tw/abc.html')->with('token', $token);

後端再開一個api給前端拿這個token,差不多是這樣:
public function getJWT(){
$token = Session::get('token');
return response()->json([
'status' => 'success',
'message' => $token
]);
}

原理是後端把token存在session,redirect到前端的response cookie中會夾帶session id,前端的下一次request會帶上cookie,就能取回在session中的資料,而且這個session是一次性的,下一次的request拿過後,就會被清除,算是蠻安全的,又能解決不把token帶在url的問題!


本筆記參考:
1. http://hk.uwenku.com/question/p-agomrvmz-bga.html
2. https://stackoverflow.com/questions/34824804/laravel-jwt-and-socialite-plugin

留言
avatar-img
留言分享你的想法!
avatar-img
Vic Lin的沙龍
20會員
161內容數
Vic Lin的沙龍的其他內容
2023/08/13
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
2023/08/13
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
2023/03/25
前情提要 由於我的筆電已經用了10年,無法再戰下去了,且有預算考量,加上使用電腦幾乎都是定點,只有偶爾回家的時候會需要攜帶,因此最終選擇了迷你電腦,體積小不占空間,又方便攜帶,剛好符合我的需求。 菜單 由於這台無法裝獨顯,所以CPU的部分選擇 AMD R5 3400G(含Vega 11內
Thumbnail
2023/03/25
前情提要 由於我的筆電已經用了10年,無法再戰下去了,且有預算考量,加上使用電腦幾乎都是定點,只有偶爾回家的時候會需要攜帶,因此最終選擇了迷你電腦,體積小不占空間,又方便攜帶,剛好符合我的需求。 菜單 由於這台無法裝獨顯,所以CPU的部分選擇 AMD R5 3400G(含Vega 11內
Thumbnail
2023/03/10
Nuxt3中可使用useFetch來獲取數據,不須再引用axios,相當方便: 本筆記參考: https://juejin.cn/post/7104071421160063012 https://juejin.cn/post/7086472647575339045
2023/03/10
Nuxt3中可使用useFetch來獲取數據,不須再引用axios,相當方便: 本筆記參考: https://juejin.cn/post/7104071421160063012 https://juejin.cn/post/7086472647575339045
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
上一篇筆記講到了瀏覽器與伺服器之間,經過身分驗證後,就會改以 Token 這個令牌作為通行證,不需要再反覆驗證,那麼這篇紀錄的就是目前最常使用的 JWT (JSON Web Token) 啦! 可以搭配 JWT 的網站來玩看看 JWT(JSON Web Token) 顧名思義就是以 JSON
Thumbnail
上一篇筆記講到了瀏覽器與伺服器之間,經過身分驗證後,就會改以 Token 這個令牌作為通行證,不需要再反覆驗證,那麼這篇紀錄的就是目前最常使用的 JWT (JSON Web Token) 啦! 可以搭配 JWT 的網站來玩看看 JWT(JSON Web Token) 顧名思義就是以 JSON
Thumbnail
首先先簡單說明 Laravel 中的 Middleware (中介層),Middleware 是一種用於處理 HTTP 請求的機制,它允許你在請求到達應用程序的路由之前或之後執行一些代碼。Middleware 通常用於執行諸如驗證、授權、日誌記錄、修改請求/響應等操作。
Thumbnail
首先先簡單說明 Laravel 中的 Middleware (中介層),Middleware 是一種用於處理 HTTP 請求的機制,它允許你在請求到達應用程序的路由之前或之後執行一些代碼。Middleware 通常用於執行諸如驗證、授權、日誌記錄、修改請求/響應等操作。
Thumbnail
角色基於的訪問控制(RBAC)是管理用戶訪問資源的一種策略,根據不同的角色賦予用戶不同的權限。在本篇文章中,我們將探討如何使用Gin和JSON Web Tokens (JWT)來實現RBAC。
Thumbnail
角色基於的訪問控制(RBAC)是管理用戶訪問資源的一種策略,根據不同的角色賦予用戶不同的權限。在本篇文章中,我們將探討如何使用Gin和JSON Web Tokens (JWT)來實現RBAC。
Thumbnail
最近因為想要花些時間做完一個完整的SideProject,以前總是懂得怎麼使用,拼拼湊湊完成一個塞趴卷就交卷了,但都沒時間去真正理解這些原理的應用,而Laravel 框架本身支持的登入登出的工具,就有好多種。
Thumbnail
最近因為想要花些時間做完一個完整的SideProject,以前總是懂得怎麼使用,拼拼湊湊完成一個塞趴卷就交卷了,但都沒時間去真正理解這些原理的應用,而Laravel 框架本身支持的登入登出的工具,就有好多種。
Thumbnail
哈囉!在今天的文章中,我們將深入探討如何在 Gin 應用中實現 JWT 驗證。這種技術允許我們安全地驗證和授權用戶,並確保我們的 API 或 Web 應用的資源僅被許可的用戶訪問。
Thumbnail
哈囉!在今天的文章中,我們將深入探討如何在 Gin 應用中實現 JWT 驗證。這種技術允許我們安全地驗證和授權用戶,並確保我們的 API 或 Web 應用的資源僅被許可的用戶訪問。
Thumbnail
引用以下文章內容: Web3.0 應用八:去中心化身份(DID) 在傳統 Web2 裡,我們是透過不同平台、不同社群媒體的帳號來貼文、與他人互動,以此建立 Web2 網路身份;而在 Web3.0 中,則是透過區塊鏈來建立去中心化身份(Decentralized Identity, DID)。 DID
Thumbnail
引用以下文章內容: Web3.0 應用八:去中心化身份(DID) 在傳統 Web2 裡,我們是透過不同平台、不同社群媒體的帳號來貼文、與他人互動,以此建立 Web2 網路身份;而在 Web3.0 中,則是透過區塊鏈來建立去中心化身份(Decentralized Identity, DID)。 DID
Thumbnail
session & token 驗證機制早期是用 session,server 這裡會發一個 session 給 client,並在資料庫記錄這個 session 屬於誰,而且每個裝置都會記一組 session,這會造成 server 這邊需要記錄大量的資料。 後來發展出 token,client
Thumbnail
session & token 驗證機制早期是用 session,server 這裡會發一個 session 給 client,並在資料庫記錄這個 session 屬於誰,而且每個裝置都會記一組 session,這會造成 server 這邊需要記錄大量的資料。 後來發展出 token,client
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News