这里的另一个新手问题,但希望有人可以阐明:
我在 Laravel 5 中使用 Socialite,我希望能够在用户登录后将用户重定向到网站上的页面。问题是使用
return redirect('any-path-I-put-here');
只需重定向回“social-site/login?code=afkjadfkjdslkfjdlkfj...”(其中“social-site”是正在使用的任何网站,即 facebook、twitter、google 等)
因此,在我看来,Socialite/Contracts/Provider 接口中的 redirect() 函数会覆盖我事后尝试的任何重定向。
只是为了澄清,我的路线设置正确。我已经尝试了您可以想象的每个版本的“重定向”(“to”、“back”、“intended”、Redirect:: 等),并且该方法是从我的 Auth Controller 调用的(尽管我已经在其他地方尝试过)以及)。
问题是,一旦我完成了使用社交名流存储和登录用户,我该如何覆盖该 redirect() ?任何帮助表示赞赏!先感谢您。
包含相关重定向的代码是:
public function socialRedirect( $route, $status, $greeting, $user )
{
$this->auth->login( $user, true );
if( $status == 'new_user' ) {
// This is a new member. Make sure they see the welcome modal on redirect
\Session::flash( 'new_registration', true );
return redirect()->to( $route );// This is just the most recent attempt. It originated with return redirect($route);, and has been attempted every other way you can imagine as well (as mentioned above). Hardcoding (i.e., 'home') returns the exact same result. The socialite redirect always overrides anything that is put here.
}
else {
return redirect()->to( $route )->with( [ 'greeting' => $greeting ] );
}
}
... 然而,在此之前运行的 SocialAuth 类大约有 500 行,因为它必须确定用户是否存在,必要时注册新用户,显示不同场景的表单等。同时,这里是函数通过 Social Auth 类发送信息:
private function socialLogin( $socialUser, $goto, $provider, $status, $controller )
{
if( is_null( $goto ) ) {
$goto = 'backlot/' . $socialUser->profile->custom_url;
}
if( $status == 'new_user' ) {
return $controller->socialRedirect($goto, $status, null, $socialUser);
}
else {
// This is an existing member. Show them the welcome back status message.
$message = 'You have successfully logged in with your ' .
ucfirst( $provider ) . ' credentials.';
$greeting =
flash()->success( 'Welcome back, ' . $socialUser->username . '. ' . $message );
return $controller->socialRedirect($goto, $status, $greeting, $socialUser);
}
}