JWT 인증 미들웨어
JWT 인증 미들웨어는 JWT를 통해 토큰을 검증하여 인증을 제공한다. cookie 옵션이 설정되지 않은 경우, 미들웨어는 Authorization 헤더를 확인한다.
INFO
클라이언트가 보낸 Authorization 헤더는 특정 스키마를 따라야 한다.
예시: Bearer my.token.value 또는 Basic my.token.value
Import
ts
import { Hono } from 'hono'
import { jwt } from 'hono/jwt'
import type { JwtVariables } from 'hono/jwt'사용법
ts
// `c.get('jwtPayload')`의 타입을 추론하기 위해 변수 타입을 지정:
type Variables = JwtVariables
const app = new Hono<{ Variables: Variables }>()
app.use(
'/auth/*',
jwt({
secret: 'it-is-very-secret',
})
)
app.get('/auth/page', (c) => {
return c.text('인증에 성공했습니다')
})페이로드 가져오기:
ts
const app = new Hono()
app.use(
'/auth/*',
jwt({
secret: 'it-is-very-secret',
})
)
app.get('/auth/page', (c) => {
const payload = c.get('jwtPayload')
return c.json(payload) // 예: { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
})TIP
jwt()는 단순한 미들웨어 함수다. 환경 변수(예: c.env.JWT_SECRET)를 사용하려면 다음과 같이 작성할 수 있다:
js
app.use('/auth/*', (c, next) => {
const jwtMiddleware = jwt({
secret: c.env.JWT_SECRET,
})
return jwtMiddleware(c, next)
})옵션
required secret: string
시크릿 키 값을 설정한다.
선택 사항 cookie: string
이 값을 설정하면 해당 값을 키로 사용해 쿠키 헤더에서 값을 가져온 후, 토큰으로 유효성을 검사한다.
optional alg: string
검증에 사용할 알고리즘 타입을 지정한다.
기본값은 HS256이다.
사용 가능한 타입은 HS256 | HS384 | HS512 | RS256 | RS384 | RS512 | PS256 | PS384 | PS512 | ES256 | ES384 | ES512 | EdDSA이다.