2017-09-29 9 views
0

Laravel Passportでは、サーバーからアクセストークンを取得した後、クライアントからユーザー情報にアクセスできます。今、クライアントのダッシュボードにリダイレクトする方法が残っていますか? 、 ダッシュボードにリダイレクトする前にAuthでユーザー情報を保存すると、後でVarifyUserミドルウェアを通じて他のすべてのルートを確認したい:Laravel 5.4 Passport - アクセストークンからユーザー情報を取得した後にクライアントダッシュボードにリダイレクトする方法

Route::get('/callback', function (Illuminate\Http\Request $request) { 
    $http = new GuzzleHttp\Client; 

    $response = $http->post('http://localhost.server:8080/oauth/token', [ 
     'form_params' => [ 
      /* Auth code grant*/ 
      'client_id' => '<client_id>', 
      'client_secret' => '<client_secret>', 
      'grant_type' => 'authorization_code', 
      'redirect_uri' => 'http://localhost.client:8000/callback', 
      'code' => $request->code, 
     ], 
    ]); 

     $auth_grant = json_decode((string) $response->getBody(), true); 
     $token_type = $auth_grant['token_type']; 
     $access_token = $auth_grant['access_token']; 

     $user_auth = $http->request('GET', 'http://localhost:8080/api/user', [ 
      'headers' => [ 
       'Accept' => 'application/json', 
       'Content-Type' => 'application/json', 
       'Authorization' => $token_type.' '.$access_token, 
      ], 
     ]); 
     $usrAuth = json_decode((string) $user_auth->getBody(), true); 
}); 

は、ここに私のコールバック関数です。 Auth::checkを介してユーザーを認証します。

Route::group(['middleware' => ['verify_user', 'language']], function(){ 
// If you want to check loggining user, have to use 'verify_user' middleware 
    route::group(['namespace' => 'Index'], function(){ 
    Route::get('/index', '[email protected]'); 
    }); 

    route::group(['namespace' => 'Group'], function(){ 
    // Group page 
    Route::get('/group-registration', '[email protected]'); 

    // Register group 
    Route::post('/registerGroup', '[email protected]'); 
    }); 
} 

VerifyUserミドルウェア:

<?php 

namespace App\Http\Middleware; 

// Requirement 
use Illuminate\Support\Facades\Auth; 
use Closure; 

class VerifyUser 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if(!Auth::check()){ 
     return redirect('/login'); 
     } 

     return $next($request); 
    } 
} 
+0

の終わりにリダイレクト応答を追加 - 最後に>()に –

+0

感謝を。しかし実際にリダイレクトする前に、私は '' Auth''にユーザ情報を保存し、後で '' Auth :: check''を通してユーザを認証したいと思っています。 – PS1212

答えて

0

あなたは()リダイレクトを使用することができます方法

Route::get('/callback', function (Illuminate\Http\Request $request) { 
    // callback handle 
    .... 

    // here, add this to redirect after callback success 
    return redirect('dashboard'); 
}); 
+0

ありがとうございます。しかし実際にはダッシュボードにリダイレクトする前に、Authにユーザー情報を格納し、後でVerifyUserミドルウェアを介して他のすべてのルートを検証する必要があります。 Auth :: checkを使ってユーザーを認証します。 – PS1212

+0

確かに、それは非常に可能です。私はより詳細なコードの要点を作成しました https://gist.github.com/rslhdyt/cfdee2f3645691e8c2ce92927fcfb876 – rslhdyt

+0

お返事ありがとうございます。しかしあなたは社会主義者を使っています。パスポートでそれを行う方法? – PS1212

関連する問題