Laravel Socialite third-party login with JWT

2020/12/24閱讀時間約 2 分鐘
使用者第三方登入如何發送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的問題!
為什麼會看到廣告
20會員
161內容數
留言0
查看全部
發表第一個留言支持創作者!