Comments (4)
@aaron-russell Here is an example (I omit some code, which you already have)
const opts = {
points: 6,
duration: 1,
storeClient: sequelize,
tableName: 'RateLimit',
};
const rateLimiterUsernamelookup = new RateLimiterPostgres({...opts, keyPrefix: 'UsernameLookup'}, ready);
const rateLimiterPasswordReset = new RateLimiterPostgres({...opts, keyPrefix: 'PasswordReset'}, ready);
exports.rateLimiting = (req, res, next) => {
let rateLimiter = null
if (req.path.indexOf('username') > -1 {
rateLimiter = rateLimiterUsernamelookup
} else if (req.path.indexOf('passwordReset') > -1 {
rateLimiter = rateLimiterPasswordReset
}
if (rateLimiter !== null) {
rateLimiter.consume(req.ip, 1)
.then((rateLimiterRes) => {
next();
})
.catch(() => {
res.status(429).send('Too Many Requests');
});
} else {
next()
};
from node-rate-limiter-flexible.
Don't know why I didn't think of that. Thank you!
from node-rate-limiter-flexible.
@aaron-russell Hi.
There is keyPrefix option. It allows to store data for different limiters in the same table.
You can create 2 limiters with different keyPrefix
and consume points from appropriate limiter depending on conditions.
from node-rate-limiter-flexible.
Hi @animir
But that would require a lot of duplicate code because it would the the exact same filw, just with the keyPrefix changed? Or am I missing something?
from node-rate-limiter-flexible.
Related Issues (20)
- BurstyRateLimiter.get( key ) throws error when key doesn't exist yet HOT 2
- TypeError: Cannot read properties of null (reading 'points') using mongoose HOT 9
- Redis configuration
- Run test using github actions HOT 1
- Lua script takes non integer argument as input which causes random error on user supplied input HOT 6
- Lua Script uses only Write commands and Cannot Scale in a Redis Cluster HOT 9
- Rate limit redis - Express middleware HOT 7
- Unable to use table with schema name HOT 7
- Redis limiter on version 3.0.2 TypeError: Invalid argument type TypeError: result is not iterable HOT 2
- RateLimiterMemory blockDuration doesnt work with 1 billion seconds HOT 4
- rateLimiter.get always returns `null` HOT 4
- Usage with Prisma ? HOT 2
- RateLimiterMemory msBeforeNext is negative in Vercel edge function HOT 8
- PM2 cluster error "timeout: no answer from master in time" if the master is not already available when the client is created HOT 2
- consume() vs penalty() HOT 1
- Very large bundle size HOT 12
- RateLimiterMongo TypeError: Cannot read properties of null (reading 'value') HOT 1
- [Feature Request]: Don't Throw Errors When `limiter.consume()` Rejects a Request from a User HOT 4
- How to prevent negative values HOT 2
- Dynamo this.client.updateItem is not a function HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from node-rate-limiter-flexible.