🔥
HonoのmiddlewareでAPI-KEYを使った認証を行う
これはAWS Lambdaのテンプレートを使って作成したアプリケーション内での実装です。
Honoではmiddlewareを設定することができ、'*'
を指定することで全てのリクエストに対して同様の処理を行う設定ができます。
以下のようにすることで、リクエストのヘッダーに正しいX-API-KEY
が設定されていないリクエストは全てForbidden
とすることができます。
npm run dev
で動かせるようにlambda/index.ts
からsrc/index.ts
に移して使ってます。
// 省略
"dev": "bun run --hot src/index.ts"
// 省略
src/index.ts
import { Hono } from 'hono'
import { HTTPException } from 'hono/http-exception'
const API_KEY = process.env.API_KEY!
const app = new Hono()
app.use('*', async (c, next) => {
const apiKey = c.req.header('X-API-KEY')
if (apiKey !== API_KEY) {
throw new HTTPException(403, { message: 'Forbidden' })
}
await next()
})
app.get('/', async (c) => {
// 認証が通った後の処理
})
export default app
lambda/index.tsは以下のようになってます。
lambda/index.ts
import { handle } from 'hono/aws-lambda'
import app from '../src'
export const handler = handle(app)
Discussion