2017-09-05 142 views
0

我正在使用JavaScript接收用戶Facebook帳戶的訪問令牌。Laravel:爲Sociailite創建中間件Auth

當我得到令牌時,我使用令牌向服務器發送請求以獲取有關使用Socialite的用戶的信息。

$user = Socialite::driver('facebook')->userFromToken($request->token); 
     return $user->getName(); 

現在我想組API調用,只有經過身份驗證的用戶可以進行,例如/my-profilemy-data等..

中間件目的是檢查用戶是否被認證爲API的組中的所有方法的調用,而不是鍵入相同的條件:

if ($user->getName()) { 
...Execute... 
} 

任何想法,我怎麼可以把下列條件爲autehnticated用戶路由列表?

我的條件很簡單:

$user = Socialite::driver('facebook')->userFromToken($request->token); 
if ($user->getName()) { 
return true; 
} 
else { return false; } 
+0

檢查下面的答案 – Sletheren

回答

0

好吧, 首先創建中間件:

php artisan make:middleware name_of_your_middleware 

之後,已創建中間件文件中:

public function handle($request, Closure $next) 
    { 
     $user = Socialite::driver('facebook')->userFromToken($request->token); 

     if ($user->getName()) { 
      return $next($request); 
     } 
     return redirect('some_other_route_for_error');    
    } 

然後將中間件分配給中的middelware路由

protected $routeMiddleware = [ 
    //....... 
    'name_of_your_middleware' => \Illuminate\Auth\Middleware\Authenticate::class, 
]; 

在你的路線文件(api.php):

Route::group(['middleware'=>['name_of_your_middleware']],function(){ 
    //your routes 
}); 

希望它能幫助:)