2017-09-05 102 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 
}); 

希望它能帮助:)