Laravel Passport如何在laravel 5.3中工作?

时间:2016-10-12 06:05:56

标签: php laravel laravel-5.3

在观看有关护照的laracast视频后,我知道护照用于验证我们自己的api.Still我对护照感到困惑

1.如何验证get,post,put和delete的身份验证请求。如果我在get url用户中传递令牌,则可以轻松查看和使用该令牌。

2.我可以限制特定用户使用我的api的请求数吗?

3.如果任何人解码Android应用程序然后他们使用该api令牌。在这种情况下我们如何保护?

如果我的问题有任何想法请原谅。我对laravel 5.3中的护照和api路由不太满意

谢谢

2 个答案:

答案 0 :(得分:2)

  1. 是的,您将令牌传递给每个请求。如下所述:https://laravel.com/docs/master/passport#passing-the-access-token
  2. 是的,你会使用中间件来做到这一点。我建议你使用Illuminate\Routing\Middleware\ThrottleRequests课程激励自己。
  3. 如果您发现某个特定令牌已被盗或者其他内容,您可以刷新特定令牌......但将client_idclient_secret存储在移动应用中显然不安全。

答案 1 :(得分:2)

Passport建立在League OAuth2 server之上,如果你想深入了解有关Oauth2的安全性,你应该熟悉它,这有点超出了问题的范围。为了简单起见,使用服务器上的Laravel 5.3,SSL / TLS中的内置功能来保护应用程序和服务器之间的通信,除非你做一些非常奇怪的事情,否则你很可能会很好。 OAuth2非常强大,并且被该领域的许多主要参与者使用,因此不必担心安全问题。

如果你已经习惯了传统的身份验证方式,那么抓住必须将令牌传递给每个请求可能有点奇怪,有一篇非常好的文章解释了它如何在{{3 }}

您可以使用中间件保护路线。 Passport包含一个身份验证防护,可根据传入的请求验证访问令牌,例如:

Route::get('/api/user', function () {
    //
})->middleware('auth:api');

Larael内置了一个速率限制功能,可以限制任何API请求者提出请求的速率。正如您可能已经猜到的那样,您也应该使用中间件,对于laravel来说,它是您可以使用的节流中间件,示例代码(使用/ api作为前缀):

Route::group(['prefix' => 'api', 'middleware' => 'throttle'], function () {
    Route::get('user', function () {
        return Person::all();
    });
});

默认限制是每分钟60次尝试,如果用户达到限制,则禁用访问一分钟。

如果您对此路线发出请求,现在您将在响应标题中看到以下行:

HTTP/1.1 200 OK
... other headers here ...
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

您当然可以自定义节流中间件,如果您想将其限制为每分钟10次尝试,您可以这样做:

Route::group(['prefix' => 'api', 'middleware' => 'throttle:10'], function () {
    Route::get('user', function () {
        return User::all();
    });
});

你还可以添加第二个参数来决定他们可以再试一次的分钟数,你会做'throtttle:10,10'