簡體   English   中英

Laravel社交名流記住我

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM