これを行う簡単な方法は、スロットルミドルウェアを変更することです。
まず、このような基本スロットルミドルウェア拡張する新しいミドルウェア作成:アプリでスロットルミドルウェアを変更
namespace App\Http\Middleware;
use Illuminate\Routing\Middleware\ThrottleRequests as
BaseThrottleRequests;
class ThrottleRequests extends BaseThrottleRequests
{
}
そしてを/ HTTP/Kernel.php:
'throttle' => \App\Http\Middleware\ThrottleRequests::class
それがしますあなた自身のスロットルミドルウェアを使用しています。そして、それはlaravelからのものから広がっています。それはその機能性を持ち、前と同じように動作します。
次に、Too Many Attempsのケースでは、buildResponse
が応答を作成することがわかります。そのため、あなたは自分のミドルウェア内部でそれを上書きする必要があります。
protected function buildResponse($key, $maxAttempts)
{
$retryAfter = $this->limiter->availableIn($key); // This gives you the number of seconds before the next time it is available
return redirect('test')->with('error', '...'); // You can use redirect() and all those stuffs as you would normally do to redirect the user and set a session message
}
が、それは魔法のように動作します:) – user2983865
どういたしまして、秀多くのアレックスをありがとう:) –
アレックス私は1つの以上の質問があります。あなたのソリューションは素晴らしいですが、私はこのようにハードコードされたエラーメッセージを表示します: 'return redirect( 'test') - >( 'error'、 'Try 10 minutes later');' Retry-After time dynamicを表示できますか?私は5分後に 'Try 5 minutes later'などと表示された場合を意味します。 – user2983865