@sumor/token-middleware

토큰 미들웨어

Sumor Cloud 도구.
자세한 문서

ExpressJS를 위한 토큰 미들웨어.

CI 테스트 Coverage Audit

설치

npm i @sumor/token-middleware --save

전제 조건

Node.JS 버전

Node.JS 버전 18.x 이상 필요

Node.JS ES 모듈 필요

이 패키지는 ES 모듈로 작성되었기 때문에, package.json 파일에서 다음 코드를 변경해야 합니다:

{
  "type": "module"
}

사용법

ExpressJS 앱에 토큰 미들웨어 추가

import express from 'express'
import tokenMiddleware from '@sumor/token-middleware'

const app = express()
app.use(tokenMiddleware)

// 토큰 로드
app.use(async (req, res, next) => {
  const tokenId = req.token.id
  const tokenInfo = await fetchToken(tokenId)
  req.token.user = tokenInfo.user
  req.token.data = tokenInfo.data
  req.token.permission = tokenInfo.permission
  next()
})

// 토큰 설정
app.get('/login', async (req, res) => {
  const username = req.query.username
  const password = req.query.password
  req.token.id = await createToken(username, password)
  // 't' 쿠키를 응답 헤더에 자동으로 추가할 것임
  res.send('로그인 성공')
})

// 토큰 사용
app.get('/api', (req, res) => {
  // 권한 확인
  req.token.check('AUTH1')

  res.send('안녕, 세계')
})

권한 확인

// 권한 획득
req.token.permission = {
  AUTH1: ['READ', 'WRITE'],
  AUTH2: ['READ']
}
const hasAuth1 = req.token.has('AUTH1') // 참
const hasAuth2 = req.token.has('AUTH2') // 참
const hasAuth3 = req.token.has('AUTH3') // 거짓

const hasAuth1Read = req.token.has('AUTH1', 'READ') // 참
const hasAuth1Write = req.token.has('AUTH1', 'WRITE') // 참
const hasAuth2Read = req.token.has('AUTH2', 'READ') // 참
const hasAuth2Write = req.token.has('AUTH2', 'WRITE') // 거짓

// 권한 확인
req.token.check('AUTH1') // 통과
req.token.check('AUTH2') // 통과
req.token.check('AUTH3') // 에러 PERMISSION_DENIED 권한 거부됨: AUTH3
req.token.check('AUTH1', 'READ') // 통과
req.token.check('AUTH1', 'WRITE') // 통과
req.token.check('AUTH2', 'READ') // 통과
req.token.check('AUTH2', 'WRITE') // 에러 PERMISSION_DENIED 권한 거부됨: AUTH2=WRITE