Skip to content

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 ​

시크릿 키 값을 설정한다.

이 값을 설정하면 해당 값을 키로 사용해 쿠키 헤더에서 값을 가져온 후, 토큰으로 유효성을 검사한다.

optional alg: string ​

검증에 사용할 알고리즘 타입을 지정한다.
기본값은 HS256이다.

사용 가능한 타입은 HS256 | HS384 | HS512 | RS256 | RS384 | RS512 | PS256 | PS384 | PS512 | ES256 | ES384 | ES512 | EdDSA이다.

Released under the MIT License.