登录后新重定向

另一个新问题在这里,但希望有人可以点亮一些:

我在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控制器调用了该方法(尽管我已经在别处尝试过了以及)。

问题是,一旦我完成存储和使用社交网站登录用户,我该如何覆盖重定向()? 任何帮助表示赞赏! 先谢谢你。

包含相关重定向的代码是:

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);
    }
}

我相信你正在推翻这一点。 使用Socialite非常简单:

设置config/services.php 。 对于脸书我有这样的:

 'facebook' => [
    'client_id' => 'your_fb_id',
    'client_secret' => 'your_fb_secret',
    'redirect' => '>ABSOLUTE< url to redirect after login', //like: 'http://stuff'
  ],

然后设置两条路线,一条用于登录,一条用于回叫(登录后)。

在登录控制器方法中:

return Socialize::with('facebook')->redirect();

然后在回调函数中

$fb_user = Socialize::with('facebook')->user();
// check if user exists, create it and whatnot
//dd($fb_user);
return redirect()->route('some.route');

有关更多详细信息,请查看:http://www.codeanchor.net/blog/complete-laravel-socialite-tutorial/

对于所有其他提供商而言,它应该非常相似。


我设法解决了这个问题,但我不确定这是否是解决问题的最佳方法。 类似于问题所述,我从社交媒体获得了认证回拨,但我无法将当前响应重定向到另一个网址。

基于回调请求参数,我能够在我的Laravel应用程序中创建和验证用户。 它到目前为止效果不错,但是当我试图做一个return redirect()->route('dashboard'); 。 我尝试了所有redirect()辅助函数和Redirect门面的风格,但没有任何帮助。

空白页面只是盯着我的脸超过2天,在我检查这个问题之前。 行为非常相似。 我从社交媒体重定向到我的应用,但无法在相同的响应周期中进一步重定向。

此时(当应用程序收到回调并且用户已通过验证时),如果手动刷新页面(F5),我将重定向到预期的页面。 我的解释与之前在这个问题中所说的类似。 来自社交媒体回调的重定向主导着我在我的控制器中触发的重定向(可能由于来自社交媒体的重定向尚未完成而在Laravel应用中重定向被压制)。 这只是我的解释。 如果专家认为不然,或者有更好的解释,专家可以抛出更多的光线。

为了解决这个问题,我使用header("Location /dashboard");发布了一个原始http重定向header("Location /dashboard"); 并将auth中间件应用于此路由。 这样我可以嘲笑刷新功能,重定向到仪表板(或预期的URL),并检查我的DashboardController中的身份验证。

再次,这不是一个完美的解决方案,我正在调查问题的实际根源,但如果您遇到类似问题,这可能会帮助您继续前进。


我们在UserController中使用Socialite登录名作为特征。 我们简单地覆盖了控制器中的AuthenticatesSocialiteLogin :: loginSuccess()。

use BrocoSocialiteLoginAuthAuthenticatesSocialiteLogin;

class UserController extends BaseController
{
    use AuthenticatesSocialiteLogin;

    public function loginSuccess($user)
    {
        return redirect()->intended(url('/#login-success'));
    }

....
链接地址: http://www.djcxy.com/p/33107.html

上一篇: New Redirect After Login

下一篇: Nexmo restricted to sent messages globally