Laravel:为Sociailite Auth创建中间件

时间:2017-09-05 10:34:06

标签: laravel laravel-socialite laravel-middleware

我使用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; }

1 个答案:

答案 0 :(得分: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');            
    } 

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

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

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

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

希望有所帮助:)