【问题标题】:How Laravel Passport works in laravel 5.3?Laravel Passport 如何在 laravel 5.3 中工作?
【发布时间】:2016-10-12 06:05:56
【问题描述】:

看了有关护照的laracast视频后,我了解到护照是用来验证我们自己的api的。仍然对护照感到困惑

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

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

3.如果有人解码了 android 应用程序,那么他们会使用该 api 令牌。在这种情况下,我们如何保护?

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

谢谢

【问题讨论】:

    标签: php laravel laravel-5.3


    【解决方案1】:
    1. 是的,您将令牌传递给每个请求。就像这里解释的那样:https://laravel.com/docs/master/passport#passing-the-access-token
    2. 是的,您可以使用中间件来做到这一点。我建议您通过 Illuminate\Routing\Middleware\ThrottleRequests 课程来激发自己。
    3. 如果您发现特定令牌被盗或其他原因,您可以刷新它……但将 client_idclient_secret 存储在移动应用中显然不安全。

    【讨论】:

    • @Simon.Thanks for answer
    【解决方案2】:

    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'

    【讨论】:

    • @Bobeta。感谢您的详细回答。我会尽力理解
    • 不客气,它会随着时间的推移而突破并变得有意义,只要保持一致! ;)
    猜你喜欢
    • 1970-01-01
    • 2017-02-28
    • 2017-04-11
    • 2017-05-13
    • 2017-02-28
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多