我在我的项目中使用谷歌驱动器登录谷歌。
它对我来说很好,但问题是当用户选择电子邮件时,在回调方法中用户必须重定向到'/'
,但用户将重定向到home
,这是回调方法:
public function callback(Request $request)
{
$googleUser = Socialite::driver('google')->stateless()->user();
$user = User::where('email', $googleUser->email)->first();
if (!$user) {
$user = User::create([
'name' => $googleUser->name,
'email' => $googleUser->email,
'password' => bcrypt(\Str::random(16))
]);
}
auth()->loginUsingId($user->id);
return $this->loggedIn($request, $user) ?: redirect(route('login'));
}
下次用户用 google 登录没问题,但第一次重定向到home
.
并且在loggedIn函数中第一次返回false,因为two_factor_type
默认是关闭的:
public function loggedIn(Request $request, $user)
{
if ($user->two_factor_type === 'on') {
auth()->logout();
$request->session()->flash('auth', [
'user_id' => $user->id,
'remember' => $request->has('remember')
]);
if ($user->two_factor_type === 'on') {
$code = ActiveCode::generateCode($user);
//TODO send sms
}
return redirect(route('login.twoFactor'));
}
return false;
}
即使在我的LoginController或RegisterController我改变了这个:
protected $redirectTo = RouteServiceProvider::HOME;
对此:
protected $redirectTo = '/';
那么为什么它会重定向到home
?