[英]Laravel Socialite Remember Me
我正在使用Socialite進行用戶登錄,並且我想設置一個remember_token
以在用戶通過Socialite登錄時記住該用戶。
現在,我可以使用以下服務來創建或登錄用戶:
class SocialAccountService {
public function createOrGetUser(ProviderUser $providerUser) {
$account = SocialAccount::whereProvider('google')
->whereProviderUserId($providerUser->getId())
->first();
if ($account) {
return $account->user;
} else {
$account = new SocialAccount([
'provider_user_id' => $providerUser->getId(),
'provider' => 'google'
]);
$user = User::whereEmail($providerUser->getEmail())->first();
if (!$user) {
$user = User::create([
'email' => $providerUser->getEmail(),
'name' => $providerUser->getName()
]);
}
$account->user()->associate($user);
$account->save();
return $user;
}
}
}
使用以下控制器調用它:
class AuthController extends Controller {
public function logout() {
Auth::logout();
return redirect('/');
}
public function redirectToGoogle() {
return Socialite::driver('google')->redirect();
}
public function handleGoogleCallback(SocialAccountService $service) {
$user = $service->createOrGetUser(Socialite::driver('google')->user());
auth()->login($user);
return redirect('/');
}
}
問題是,當用戶回來時,他們不會被記住並自動登錄。如何使用Socialite做到這一點?
根據文檔 ,傳遞true
作為login()
的第二個參數將設置記住標記。
// Login and "remember" the given user... Auth::login($user, true);
Auth
外觀和auth()
幫助函數訪問同一對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.