🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

2667閲覧

Laravel8.xの429 (Too Many Requests)の意味について

DeepRoastBeans

総合スコア80

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/02/15 02:53

あるLaravelのアプリケーションをリリースしたところ、リリース直後、429 (Too Many Requests)が表示されました。
RouteServiceProvider.phpを見ると、return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());と記載があるのですが、この、by(optional($request->user())->id ?: $request->ip());はどういう意味でしょうか?

app/Providers/RouteServiceProvider.php

php

1 protected function configureRateLimiting() 2 { 3 RateLimiter::for('api', function (Request $request) { 4 return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); 5 }); 6 7 RateLimiter::for('login', function (Request $request) { 8 return new Limit('', 10, 10); 9 }); 10 }

同一IPから1分間に60回以上リクエストがあると、そのユーザだけでなくアプリ全体が429 (Too Many Requests)となるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/02/15 03:43

一個一個分解して調べてみましたか?ドキュメントに何も記載がないとは思えません
guest

回答1

0

ベストアンサー

この、by(optional($request->user())->id ?: $request->ip());はどういう意味でしょうか?

ユーザーが認証済みならそのUserのid毎に、未認証ならクライアントのIPアドレス毎に制限する、という意味です。

$request->user() は認証済みユーザー(Userのインスタンス)を取得するメソッドです。未認証の場合はnullを返します。

optional() はLaravelのヘルパ関数の1つで、引数がnullの場合にプロパティやメソッドへのアクセスでエラーが発生することを防げます。

参考:

同一IPから1分間に60回以上リクエストがあると、そのユーザだけでなくアプリ全体が429 (Too Many Requests)となるのでしょうか?

いいえ。アプリ全体がそうなることはありません。

投稿2021/02/15 05:31

編集2021/02/15 05:48
Lulucom

総合スコア1899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DeepRoastBeans

2021/02/15 06:08

詳細ありがとうございます。APIトークンで認証しており、そのthrottleが1分60回で設定しているんですね。(認証の仕組みはまだ完全に理解できておりませんが。。) >アプリ全体がそうなることはありません。 429 (Too Many Requests)が5~10分ぐらい継続したので、気になりましたが、安心しました。 ご丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問