@sumor/token-middleware

token-middleware

Sumor Cloud Tool.
더 많은 문서 ExpressJS용 토큰 미들웨어.

CI Test Coverage Audit

설치

npm i @sumor/token-middleware --save

전제 조건

Node.js 버전

Node.js 버전 16.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') // true
const hasAuth2 = req.token.has('AUTH2') // true
const hasAuth3 = req.token.has('AUTH3') // false

const hasAuth1Read = req.token.has('AUTH1', 'READ') // true
const hasAuth1Write = req.token.has('AUTH1', 'WRITE') // true
const hasAuth2Read = req.token.has('AUTH2', 'READ') // true
const hasAuth2Write = req.token.has('AUTH2', 'WRITE') // false

// 권한 확인
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