input(Fortify::username())).'|'.$request->ip()); return Limit::perMinute(5)->by($throttleKey); }); RateLimiter::for('two-factor', function (Request $request) { return Limit::perMinute(5)->by($request->session()->get('login.id')); }); // Registration is public (no per-account key), so throttle per IP to blunt // signup spam / CPU-exhaustion via repeated password hashing. RateLimiter::for('registration', fn (Request $request) => Limit::perMinute(10)->by($request->ip())); RateLimiter::for('passkeys', function (Request $request) { $credentialId = $request->input('credential.id'); return Limit::perMinute(10)->by( ($credentialId ?: $request->session()->getId()).'|'.$request->ip() ); }); } }