IP Restriction ミドルウェア
IP Restriction ミドルウェアは、ユーザーの IP アドレスに基づいてリソースへのアクセスを制限します。
インポート
ts
import { Hono } from 'hono'
import { ipRestriction } from 'hono/ip-restriction'使い方
Bun で動かすアプリケーションでローカルからのアクセスだけを許可する場合は、次のように記述できます。denyList に拒否するルール、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!'))環境に合った ConnInfo ヘルパーの getConninfo を、ipRestriction の第 1 引数に渡します。たとえば、Deno では次のようになります。
ts
import { getConnInfo } from '@hono/deno'
import { ipRestriction } from 'hono/ip-restriction'
//...
app.use(
'*',
ipRestriction(getConnInfo, {
// ...
})
)ルール
次の説明に従ってルールを記述してください。
IPv4
192.168.2.0- 固定 IP アドレス192.168.2.0/24- CIDR 表記*- すべてのアドレス
IPv6
::1- 固定 IP アドレス::1/10- CIDR 表記*- すべてのアドレス
エラー処理
エラーをカスタマイズするには、第 3 引数で Response を返します。
ts
app.use(
'*',
ipRestriction(
getConnInfo,
{
denyList: ['192.168.2.0/24'],
},
async (remote, c) => {
return c.text(`Blocking access from ${remote.addr}`, 403)
}
)
)