Passport 建立在 League OAuth2 server 之上,如果您想深入了解有关 Oauth2 的安全性,您应该熟悉它,这里有点超出问题的范围。为简单起见,请使用 Laravel 5.3 中的内置功能、服务器上的 SSL/TLS 来保护应用程序和服务器之间的通信,除非你做一些非常奇怪的事情,否则你很可能会没事。 OAuth2 非常健壮,该领域的许多主要参与者都在使用它,所以不要太担心安全性。
如果您习惯于传统的身份验证方式,掌握必须将令牌传递给每个请求可能有点奇怪,有一篇关于它的非常好的文章解释了它在 Scotch: The Ins and Outs of Token Based Authentication 上的工作原理
您可以使用中间件保护路由。 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'。