Middleware IP Restriction
Le middleware IP Restriction limite l’accès aux ressources selon l’adresse IP de l’utilisateur.
Importation
ts
import { Hono } from 'hono'
import { ipRestriction } from 'hono/ip-restriction'Utilisation
Pour une application exécutée sur Bun, vous pouvez autoriser uniquement les accès locaux comme suit. Spécifiez les règles de refus dans denyList et les règles d’autorisation dans allowList.
ts
import { Hono } from 'hono'
import { getConnInfo } from '@hono/bun'
import { ipRestriction } from 'hono/ip-restriction'
const app = new Hono()
app.use(
'*',
ipRestriction(getConnInfo, {
denyList: [],
allowList: ['127.0.0.1', '::1'],
})
)
app.get('/', (c) => c.text('Hello Hono!'))Passez la fonction getConninfo de l’utilitaire ConnInfo adaptée à votre environnement comme premier argument de ipRestriction. Par exemple, sur Deno :
ts
import { getConnInfo } from '@hono/deno'
import { ipRestriction } from 'hono/ip-restriction'
//...
app.use(
'*',
ipRestriction(getConnInfo, {
// ...
})
)Règles
Suivez les instructions ci-dessous pour écrire les règles.
IPv4
192.168.2.0- Adresse IP fixe192.168.2.0/24- Notation CIDR*- Toutes les adresses
IPv6
::1- Adresse IP fixe::1/10- Notation CIDR*- Toutes les adresses
Gestion des erreurs
Pour personnaliser l’erreur, renvoyez une Response dans le troisième argument.
ts
app.use(
'*',
ipRestriction(
getConnInfo,
{
denyList: ['192.168.2.0/24'],
},
async (remote, c) => {
return c.text(`Blocking access from ${remote.addr}`, 403)
}
)
)