Laravel:为 Sociailite Auth 创建中间件
Laravel: Create middleware for Sociailite Auth
我正在使用 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; }
好的,
首先创建中间件:
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
});
希望对您有所帮助:)
我正在使用 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; }
好的, 首先创建中间件:
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
});
希望对您有所帮助:)