Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 고양이 사진 검색기
- vue 지역 컴포넌트
- 쌓임맥락
- 이벤트 수식어
- vuex map
- SCSS forward
- 폼 입력 바인딩
- KDT 프로그래머스
- SCSS extend
- react next
- 다른컴퓨터에서 git사용
- nextjs사용법
- 프로그래머스 데브코스
- netlify redirect
- vue 이벤트 수신
- 프로그래머스 데브코스 프론트엔드
- flex
- Vue
- intersection opserver
- 프로그래머스 K_Digital Training
- 프로그래머스 프론트엔드 데브코스
- vue mixin
- git 같은계정 다른 컴퓨터
- SCSS import
- KDT 프로그래머스 데브코스 프론트엔드
- Spacer
- 리스트 렌더링
- postcss
- SCSS use
- 리액트
Archives
- Today
- Total
혼자 적어보는 노트
[Node.js] 중복 로그인 검사 미들웨어 / middleware 본문
로그인이나 로그아웃, 회원가입 등
서버에 요청을 보냈을 때 바로 응답을 하지 않고
먼저 검증을 할 수 있는 미들웨어를 만들어 보자.
로그인요청을 할 경우 로그인이 되어있지 않은 상태여야 하고
로그아웃 요청을 할 경우 로그인을 한 상태여야 한다.
또한 로그인 상태를 체크하는 route들이 많아질 수 있기 때문에
반복적인 코드를 줄이기 위해 미들웨어를 추가로 적용하는 것이 좋다.
📄 알아야 할 것
const express = require('express');
const router = express.Router();
router.get('/', function(req, res) {
res.send('Hello world!');
});
module.exports = router;
router의 get, post, put, delete등의 메서드 안에는 두번째 인자부터는 미들웨어를 나타낸다.
즉, 여러개를 입력할 수 있다.
그리고 미들웨어들은 req, res, next를 인자로 가지게된다.
router.get('/', 미들웨어1, 미들웨어2, 미들웨어3);
미들웨어 1에서 next()를 호출하면 미들웨어2가 실행되고
미들웨어2에서 next()를 호출하면 미들웨어3이 실행된다.
* 여기서 next()는 괄호 안에 내용 없이 호출 시 다음 미들웨어로 넘어가는 기능을 가지고 있다.
🏠 미들웨어 생성하기
routes/middlewares.js
exports.isLoggedIn = (req, res, next) => {
if (req.isAuthenticated()) {
next();
} else {
res.status(401).send("로그인이 필요합니다.");
}
};
exports.isNotLoggedIn = (req, res, next) => {
if (!req.isAuthenticated()) {
next();
} else {
res.status(401).send("로그인 상태에서 접근할 수 없습니다.");
}
미들웨어가 될 함수를 middlewares파일에 작성해주고 각각 exports 해주었다.
조건에 부합할경우 next()를 사용하여 다음 미들웨어로 넘어가게 처리를 해준다.
req.isAuthenticated : passport의 현재 인증이 되었는지 체크 해주며 true/false를 반환한다
const express = require('express');
const router = express.Router();
const { isLoggedIn, isNotLoggedIn } = require('./middlewares');
router.post('/login', isNotLoggedIn, function(req, res) {
//login route 작성
});
router.post('/logout', isLoggedIn, function(req, res) {
//logout route 작성
});
module.exports = router;
2번째 인자에 생성한 미들웨어를 추가해주면 된다.
왼쪽부터 실행되기 때문에 해당 미들웨어를 실행하고
조건에 부합하면 다음 미들웨어가 실행되는 방식이다.
'NodeJS' 카테고리의 다른 글
[Node.js] 새로고침 시 로그인 유지 (0) | 2022.04.11 |
---|---|
[Node.js] 로그인 이후 서버 요청 시 에러 발생 해결 (0) | 2022.04.10 |
[Node.js] sequelize 연관된 데이터 합쳐서 불러오기 / attributes, include (0) | 2022.03.20 |
[Node.js] bcrypt로 암호화 (0) | 2022.03.18 |
[Node.js] sequelize 관계 설정(association)하기 / 1:1 / 1:M / N:M (0) | 2022.03.17 |
Comments