【问题标题】:Laravel Socialite Remember MeLaravel 社交名流记住我
【发布时间】:2021-10-14 07:43:49
【问题描述】:

我正在使用Socialite 进行用户登录,我想设置一个remember_token 以在用户通过社交名流登录时记住他们。

现在我有以下服务来创建或登录用户:

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 做到这一点?

【问题讨论】:

  • 我也在找同样的东西,到目前为止你找到解决办法了吗?
  • 不,我还没弄明白

标签: php laravel laravel-socialite


【解决方案1】:

根据documentation,将true 作为login() 的第二个参数传递将设置记忆令牌。

// Login and "remember" the given user... Auth::login($user, true);

Auth 外观和auth() 辅助函数访问同一个对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-20
    • 2021-02-10
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2019-05-16
    • 2018-06-25
    相关资源
    最近更新 更多