Laravel:为 Sociailite Auth 创建中间件

Laravel: Create middleware for Sociailite Auth

我正在使用 JavaScript 接收用户 Facebook 帐户的访问令牌。

获得令牌后,我使用令牌向服务器发送请求以获取有关使用 Socialite 的用户的信息。

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

现在我正在尝试对只有经过身份验证的用户才能进行的 API 调用进行分组,例如 /my-profilemy-data 等...

中间件的目的是检查用户是否通过一组 API 调用的身份验证,而不是在所有方法中键入相同的条件:

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

知道如何为授权用户的路由列表设置以下条件吗?

我的条件很简单:

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

好的, 首先创建中间件:

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

然后将中间件分配给app/Http/Kernel.php

中的路由中间件
protected $routeMiddleware = [
     //.......
    'name_of_your_middleware' => \Illuminate\Auth\Middleware\Authenticate::class,
];

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

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

希望对您有所帮助:)