我使用JavaScript接收用户Facebook帐户的访问令牌。
当我获得令牌时,我使用令牌向服务器发送请求,以使用Socialite获取有关用户的信息。
$user = Socialite::driver('facebook')->userFromToken($request->token);
return $user->getName();
现在,我尝试对只有经过身份验证的用户才能制作的API调用进行分组,例如/my-profile
,my-data
等等。
中间件的目的是检查用户是否针对一组API调用进行了身份验证,而不是在所有方法中键入相同的条件:
if ($user->getName()) {
...Execute...
}
我是否知道如何为受认证用户的路由列表设置以下条件?
我的情况很简单:
$user = Socialite::driver('facebook')->userFromToken($request->token);
if ($user->getName()) {
return true;
}
else { return false; }
答案 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
protected $routeMiddleware = [
//.......
'name_of_your_middleware' => \Illuminate\Auth\Middleware\Authenticate::class,
];
在路线文件(api.php)中:
Route::group(['middleware'=>['name_of_your_middleware']],function(){
//your routes
});
希望有所帮助:)