IP 限制中介軟體
IP 限制中介軟體是一種根據使用者 IP 位址限制資源存取的 middleware。
匯入
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
的第一個參數傳遞。 例如,對於 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 表示法*
- 所有位址
錯誤處理
若要自訂錯誤,請在第三個參數中返回 Response
。
ts
app.use(
'*',
ipRestriction(
getConnInfo,
{
denyList: ['192.168.2.0/24'],
},
async (remote, c) => {
return c.text(`Blocking access from ${remote.addr}`, 403)
}
)
)