feat: 添加部分API限流规则
This commit is contained in:
@@ -34,9 +34,19 @@ import { CommonModule } from './common/common.module';
|
||||
ignoreUserAgents: [/googlebot/i, /bingbot/i],
|
||||
throttlers: [
|
||||
{
|
||||
name: '1_min',
|
||||
name: 'min',
|
||||
limit: 100,
|
||||
ttl: 60000, // 1 minute
|
||||
ttl: 60 * 1000,
|
||||
},
|
||||
{
|
||||
name: 'hour',
|
||||
limit: 500,
|
||||
ttl: 60 * 60 * 1000,
|
||||
},
|
||||
{
|
||||
name: 'day',
|
||||
limit: 10000,
|
||||
ttl: 24 * 60 * 60 * 1000,
|
||||
},
|
||||
],
|
||||
}),
|
||||
|
||||
@@ -45,9 +45,11 @@ export class AuthController {
|
||||
|
||||
@Post('login/password')
|
||||
@UseGuards(ThrottlerGuard)
|
||||
@Throttle({ 'min': { limit: 10, ttl: 60 * 1000 } })
|
||||
@Throttle({ 'hour': { limit: 20, ttl: 60 * 60 * 1000 } })
|
||||
@Throttle({ 'day': { limit: 50, ttl: 24 * 60 * 60 * 1000 } })
|
||||
@Throttle({
|
||||
'min': { limit: 5, ttl: 60 * 1000 },
|
||||
'hour': { limit: 20, ttl: 60 * 60 * 1000 },
|
||||
'day': { limit: 50, ttl: 24 * 60 * 60 * 1000 }
|
||||
})
|
||||
async loginByPassword(
|
||||
@Body() loginDto: LoginByPasswordDto,
|
||||
@Res({ passthrough: true }) res: Response,
|
||||
@@ -61,6 +63,10 @@ export class AuthController {
|
||||
}
|
||||
|
||||
@Post('login/sms')
|
||||
@UseGuards(ThrottlerGuard)
|
||||
@Throttle({
|
||||
'day': { limit: 50, ttl: 24 * 60 * 60 * 1000 }
|
||||
})
|
||||
async loginBySms(
|
||||
@Body() dto: SmsLoginDto,
|
||||
@Res({ passthrough: true }) res: Response,
|
||||
@@ -77,6 +83,10 @@ export class AuthController {
|
||||
|
||||
|
||||
@Post('passkey/login/options')
|
||||
@UseGuards(ThrottlerGuard)
|
||||
@Throttle({
|
||||
'day': { limit: 20, ttl: 24 * 60 * 60 * 1000 }
|
||||
})
|
||||
async loginByPasskeyOptions(
|
||||
@Res({ passthrough: true }) res: Response,
|
||||
) {
|
||||
@@ -94,6 +104,10 @@ export class AuthController {
|
||||
}
|
||||
|
||||
@Post('passkey/login')
|
||||
@UseGuards(ThrottlerGuard)
|
||||
@Throttle({
|
||||
'day': { limit: 20, ttl: 24 * 60 * 60 * 1000 }
|
||||
})
|
||||
async loginByPasskey(
|
||||
@Req() req: Request,
|
||||
@Body() body: PasskeyLoginDto,
|
||||
|
||||
@@ -10,7 +10,11 @@ export class SmsController {
|
||||
|
||||
@Post('send/login')
|
||||
@UseGuards(ThrottlerGuard)
|
||||
@Throttle({ sms_login: { limit: 10, ttl: 60000 } })
|
||||
@Throttle({
|
||||
'min': { limit: 3, ttl: 60 * 1000 },
|
||||
'hour': { limit: 10, ttl: 60 * 60 * 1000 },
|
||||
'day': { limit: 20, ttl: 24 * 60 * 60 * 1000 }
|
||||
})
|
||||
async sendLoginSms(@Body() dto: SendLoginSmsDto) {
|
||||
await this.smsService.sendSms(dto.phone, 'login');
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user