16. Node 가계부 만들기 [ /accounts url passport-jwt 적용 ] - 3

2022. 5. 28. 23:10프로젝트/가계부 - 제작 JavaScript

passport-jwt : https://crispypotato.tistory.com/219

지난번 만든 passport-jwt 전략을 /accounts url 전체에 적용

 

1. app.js에서 JwtPassport 적용

 

설명

- /accounts  URL 이용 시 JwtPassport에서 토큰 값을 확인

- token이 만료, 변조, 해당유저가 없으면 /login/token-fail 로 redirect

 

app.js

require('dotenv').config()
const express = require('express')
const logger = require('morgan')
const compression = require('compression')
const httpError = require('http-errors')

const { Error } = require('./lib/lib')
const userRouter = require('./routes/users/users.route')
const loginRouter = require('./routes/login/login.route')
/// 변경 부분
const accountRouter = require('./routes/accounts/accounts.route')

const { sequelize } = require('./models/index')
const { JwtPassport } = require('./routes/login/passport')

if (process.env.NODE_ENV === 'local') {
  sequelize
    .sync()
    .then(() => {
      console.log(' DB 연결 성공')
    })
    .catch((err) => {
      console.log('연결 실패')
      console.log(err)
    })
}

const app = express()

app.use(compression())
app.use(logger('dev'))
app.use(express.json())

app.use('/user', userRouter)
app.use('/login', loginRouter)
//변경 부분
app.use(
  '/accounts',
  JwtPassport.authenticate('jwt', {
    session: false,
    failureRedirect: '/login/token-fail'
  }),
  accountRouter
)

app.use(() => {
  throw httpError(404)
})

app.use(Error)

app.listen(3000, () => {
  console.log('server start!')
})

module.exports = app

 

 

 

728x90
반응형