【问题标题】:Laravel: Create middleware for Sociailite AuthLaravel:为 Sociailite Auth 创建中间件
【发布时间】:2018-02-13 15:01:10
【问题描述】:

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

【问题讨论】:

  • 查看下面的答案

标签: laravel laravel-socialite laravel-middleware


【解决方案1】:

好的, 首先创建中间件:

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

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 2021-06-11
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多