2016-06-19 3 views
0

私はfacebook(Socialite)でログインするとsuccesメッセージを表示しようとしています。しかし、私のコントローラは何らかの理由でセッションオブジェクトをリダイレクトしていません。私のFacebookのログインが正しく機能しています。私はLaravelがを保護していると思っています$ redirectPath = '/';これのために。このパスでセッションを送信するにはどうすればよいですか?laravelでFacebookでログインするとsuccesメッセージを表示するには?

AuthController:私の見解では

protected $redirectPath = '/'; 

public function redirectToProvider() 
{ 
    return Socialite::driver('facebook')->redirect(); 
} 

public function handleProviderCallback() 
{ 
    try { 
     $user = Socialite::driver('facebook')->user(); 
    } catch (Exception $e) { 
     return redirect('auth/facebook'); 
    } 

    $authUser = $this->findOrCreateUser($user); 

    Auth::login($authUser, true); 

    // I think this line is not executing annymore bevause of the Auth::login redirect 
    return redirect()->back()->with('successfullFacebookLogin', Auth::user()->name); 
} 

@if(session()->has('successfullFacebookLogin')) 
<!-- Open login modal when successfully logged in with facebook --> 

    @include('snippets.facebook-login-modal') 

@endif 

@if(session()->has('successfullFacebookLogin')) 
    <!-- Open successfull login modal--> 
    <script> 
     $(document).ready(function() { 
      $('#successfullFacebookLoginModal').modal('show'); 
     }); 
    </script> 
@endif 

私のroutes.phpファイル(無関係なコードなし):

Route::group(['middleware' => ['web']], function() { 
    // Logged in 
    Route::group(['middleware' => 'auth'], function() { 
     // Delete a user 
     Route::get('/admin/user/delete/{id}', '[email protected]'); 
    }); 

     // Facebook login 
     Route::get('auth/facebook', array('as' => 'facebookLogin', 'uses' => "Auth\[email protected]")); 
    Route::get('auth/facebook/callback', 'Auth\[email protected]'); 
    // Get Register page 
    Route::get('/register', array('as' => 'getRegister', 'uses' => 'Auth\[email protected]')); 
    // Register 
    Route::post('/register', array('as' => 'register', 'uses' => 'Auth\[email protected]')); 
    // Login 
    Route::get('/login', array('as' => 'getLogin', 'uses' => 'Auth\[email protected]')); 
    // Login 
    Route::post('/login', array('as' => 'login', 'uses' => 'Auth\[email protected]')); 
    // Login (with modal) 
    Route::post('/login/modal', array('as' => 'loginModal', 'uses' => 'Auth\[email protected]')); 
    // Logout 
    Route::get('auth/logout', array('as' => 'getLogout','uses' => 'Auth\[email protected]')); 

}); 
私はこれを達成しようとした方法

+0

セッションを使用するように、ルートのWebミドルウェアを使用することができます。 –

+0

これはどのように行われているのでしょうか? –

+0

Route :: group(['middleware' => ['web']]、function(){ Route :: resource( 'abc'、 'xyz'); }); –

答えて

0

それは間違っている。リダイレクト時にwithを使用してデータを送信することはできません。withは、データを変数としてビューテンプレートに渡すためにのみ使用されます。

あなたの場合、セッションを使用してデータを送信する必要があります。

例:

<?php 
session()->flash('successfullFacebookLogin', Auth::user()->name); 

そして、あなたのリダイレクトコードの前にそれを置きます。セッションの詳細については

https://laravel.com/docs/5.2/session

+0

を追加しました。このようにしました:Auth :: login($ authUser、true); session() - > flash( 'successfullFacebookLogin'、Auth :: user() - > name); return redirect() - > back(); しかし、メッセージは表示されずにホームページにリダイレクトされます –

+0

@JimPeetersリダイレクト後にあなたのホームページで 'var_dump(session())'できますか?それは何を示していますか? –

+0

非常に大きなダンプだったので、ここにダンプとのリンクがあります:https://jsfiddle.net/9csb335L/ –

関連する問題