簡短版本:如何在不使用會話的情況下將從Facebook登錄(laravel/socialite)生成的JWT發送到angularjs前端的適當方式是什麼?無會話使用laravel socialite和jwt-auth
長版本 我正在製作一個具有angularjs前端和laravel 5.2後端的應用程序。我正在使用tymondesigns/jwt-auth進行身份驗證而不是會話。
我也使用laravel/socialite進行社交Facebook身份驗證。爲此,我使用社交名稱的無狀態功能,以便我不需要以任何方式進行會話。
基本驗證完美。但是,當我嘗試使用Facebook登錄,我請按照下列步驟
- 用戶點擊的角度側重定向到後端的供應商登錄頁面的按鈕。
public function redirectToProvider() { return Socialite::with('facebook')->stateless()->redirect(); }
2.用戶給出他的登錄信息。登錄後,他被重定向到我的手回鎖功能。
try {
$provider = Socialite::with('facebook');
if ($request->has('code')) {
$user = $provider->stateless()->user();
}
} catch (Exception $e) {
return redirect('auth/facebook');
}
return $this->findOrCreateUser($user);
接下來,我使用findorcreate函數來確定用戶是否存在。如果不是,我只需創建一個新用戶並從中創建JWT。
$user = User::where('social_id', '=', $facebookUser->id)->first(); if (is_object($user)) { $token = JWTAuth::fromUser($user); return redirect()->to('http://localhost:9000/#/profile?' . 'token=' . $token);#angular } else { $result = array(); $result['name'] = $facebookUser->user['first_name'] $result['email'] = $facebookUser->user['email']; $result['social_id'] = $facebookUser->id; $result['avatar'] = $facebookUser->avatar; $result['gender'] = $facebookUser->user['gender']; $result['status'] = 'active'; $result['login_type'] = 'facebook'; $result['user_type'] = 'free_user'; try { $user = User::create($result); } catch (Exception $e) { return response()->json(['error' => 'User already exists.'], HttpResponse::HTTP_CONFLICT); } $token = JWTAuth::fromUser($user); return redirect()->to('http://localhost:9000/#/profile?' . 'token=' . $token);#angular }
我的問題是,在我將不得不通過URL的智威湯遜發送給我的前端代碼的最後一塊。這根本不安全。如果不使用會話,將生成的JWT發送到前端的正確方法是什麼?謝謝
你解決這個問題?同樣的問題也在我們的應用程序中找到了。 – mtpultz
將標記存儲在cookie中也不是一個壞主意。在你的回調處理程序中,你應該設置一個帶有令牌的cookie。 –