我正在尝试使用express-gateway的速率限制功能。但我被困在如何为不同的用户使用不同的速率限制值。还有如何只限制一个端点。这是我的 gateway.config.yml
http:
port: 9000
admin:
port: 9876
hostname: localhost
apiEndpoints:
cust:
host: localhost
paths:
- '/delete'
- '/update'
serviceEndpoints:
custsurv:
url: 'http://localhost:3000'
policies:
basic-auth
cors
expression
key-auth
log
oauth2
proxy
rate-limit
pipelines:
default:
apiEndpoints:
cust
policies:
rate-limit:
action:
max: 1
windowMs: 100000
proxy:
action:
serviceEndpoint: custsurv
changeOrigin: true
现在它适用于所有用户。
我编写了一个中间件,我可以从中对用户进行身份验证,并从客户端发送的令牌中返回用户 ID。这是我的函数,我从中为不同的用户获取不同的油门值
@Get('/delete')
public async getsomelist(
@CurrentUser({ required: true }) context: ContextValidator
): Promise<ActionResponseBody> {
const throttlevalue=await this.mysqlConn.executeQuery('databasequery',context.currentUser.userId);
}
如果我需要提供更多信息,请告诉我。