12. Node 가계부 만들기 [ 로그인 Service 코드 작성 ] - 4
2022. 5. 28. 20:12ㆍ프로젝트/가계부 - 제작 JavaScript
1. 로그인 성공 시 JWT 토큰 생성
설명
- passport-local에서 로그인 성공시 req.user에 유저 정보가 온다.
- 해당 유저의 정보를 객체에 담아 jsonwebtoken 라이브러리를 이용해 JWT를 생성한다.
* 유저의 정보는 아이디, 비밀번호를 담는 것은 jwt 탈취시 위험하기 때문에 지양하고 유저을 특정 할 수 있는 인덱스 값을추천한다.
결과
- Send()에 만들어진 토큰 값을 넣어 전송한다.
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) => {
try {
const user = req.user
const info = {
check: user.index
}
const accessToken = jwt.sign(info, JWT, {
expiresIn: '1d',
issuer: 'localhost',
subject: 'userInfo'
})
return Send(res, accessToken)
} catch (E) {
next(E)
}
}
2. 로그인 실패시 throw로 에러 처리
- 로그인 실패 rediret 되어 함수가 실행 되면 404 에러를 보낸다.
const LoginFail = async (req, res, next) => {
try {
throw httpError(404)
} catch (E) {
next(E)
}
}
3. 토큰 에러시 throw로 에러 처리
- 토큰 에러 발생 시 rediret 되어 함수가 실행 되면 404 에러를 보낸다.
const TokenFail = async (req, res, next) => {
try {
throw httpError(401)
} catch (E) {
next(E)
}
}
4. 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) => {
try {
const user = req.user
const info = {
check: user.index
}
const accessToken = jwt.sign(info, JWT, {
expiresIn: '1d',
issuer: 'localhost',
subject: 'userInfo'
})
return Send(res, accessToken)
} catch (E) {
next(E)
}
}
const LoginFail = async (req, res, next) => {
try {
throw httpError(404)
} catch (E) {
next(E)
}
}
const TokenFail = async (req, res, next) => {
try {
throw httpError(401)
} catch (E) {
next(E)
}
}
module.exports = { Login, LoginFail, TokenFail }
728x90
반응형
'프로젝트 > 가계부 - 제작 JavaScript' 카테고리의 다른 글
14. Node 가계부 만들기 [ 가계부 기능 파일 생성] - 1 (0) | 2022.05.28 |
---|---|
13. Node 가계부 만들기 [ 로그인 유효성 검사 ] - 5 (0) | 2022.05.28 |
11. Node 가계부 만들기 [ 로그인 route 코드 작성 ] - 3 (0) | 2022.05.28 |
10. Node 가계부 만들기 [ 로그인 passport 전략 생성 ] - 2 (0) | 2022.05.28 |
9. Node 가계부 만들기 [ 로그인 기능 구현 파일 생성 ] - 1 (0) | 2022.05.28 |