11. Node 가계부 만들기 [ 로그인 route 코드 작성 ] - 3

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

passport 전략생성 : https://crispypotato.tistory.com/219

 

10. Node 가계부 만들기 [ 로그인 passport 전략 설정 ] - 2

passport를 이용 하여 로그인 기능, jwt 검증을 만든다. passport.js파일에 passport-local, passport-jwt 전략 생성 1. passport-local 전략 생성 usernameField : 받는 아이디 파라미터 이름 passwordField : 받..

crispypotato.tistory.com

 

1. login.service.js 코드 작성 (기본 연결을 위해 작성 실제 코드는 [ ] )

const httpError = require('http-errors')
const { Send } = require('../../lib/lib')
const jwt = require('jsonwebtoken')
const JWT = process.env.JWT
const Login = async (req, res, next) => {
}

const LoginFail = async (req, res, next) => {
}

const TokenFail = async (req, res, next) => {
}

module.exports = { Login, LoginFail, TokenFail }

2. login.route.js 코드 작성 [ service 기본 연결 ]

passport.js에서 만든 LocalPassport 전략 적용

 

failureRedirect : 로그인에 실패 시 redirect하는 url

session : 세션 사용 여부

 

//login.route.js

const express = require('express')
const router = express.Router()
const { LocalPassport } = require('./passport')
const { Login, LoginFail } = require('./login.service')

router.post(
  '/',
  LocalPassport.authenticate('local', {
    failureRedirect: '/login/fail',
    session: false
  }),
  Login
)

module.exports = router

 

3. app.js에 login.route.js 연결

 

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 { sequelize } = require('./models/index')

const loginRouter = require('./routes/login/login.route')
const userRouter = require('./routes/users/users.route')

if (process.env.NODE_ENV === 'local') {
  sequelize
    .sync()
    .then(() => {
      console.log('성공')
    })
    .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(() => {
  throw httpError(404)
})

app.use(Error)

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

 

 

4. Error  redirect 설정

 

/fail : 로그인 실패시 redirect 경로

/token-fail : 토큰 에러 발생시 redirect 경로

//login.route.js

const express = require('express')
const router = express.Router()
const { LocalPassport } = require('./passport')
const { Login, LoginFail, TokenFail } = require('./login.service')

router.post(
  '/',
  LocalPassport.authenticate('local', {
    failureRedirect: '/login/fail',
    session: false
  }),
  Login
)
router.get('/fail', LoginFail)
router.get('/token-fail', TokenFail)

module.exports = router

 

728x90
반응형