IP-Restriction-Middleware
Die IP-Restriction-Middleware beschränkt den Zugriff auf Ressourcen anhand der IP-Adresse des Benutzers.
Import
ts
import { Hono } from 'hono'
import { ipRestriction } from 'hono/ip-restriction'Verwendung
Für eine unter Bun laufende Anwendung, die nur lokalen Zugriff erlauben soll, kannst du Folgendes schreiben. Gib in denyList die abzulehnenden Regeln und in allowList die erlaubten Regeln an.
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!'))Übergib als erstes Argument von ipRestriction die für deine Umgebung passende Funktion getConninfo aus dem ConnInfo-Helfer. Für Deno sieht das beispielsweise so aus:
ts
import { getConnInfo } from '@hono/deno'
import { ipRestriction } from 'hono/ip-restriction'
//...
app.use(
'*',
ipRestriction(getConnInfo, {
// ...
})
)Regeln
Beachte beim Schreiben von Regeln die folgenden Hinweise.
IPv4
192.168.2.0- Statische IP-Adresse192.168.2.0/24- CIDR-Notation*- Alle Adressen
IPv6
::1- Statische IP-Adresse::1/10- CIDR-Notation*- Alle Adressen
Fehlerbehandlung
Um den Fehler anzupassen, gib im dritten Argument eine Response zurück.
ts
app.use(
'*',
ipRestriction(
getConnInfo,
{
denyList: ['192.168.2.0/24'],
},
async (remote, c) => {
return c.text(`Blocking access from ${remote.addr}`, 403)
}
)
)