Back Ground

Node - Express 미들웨어 connect-flash 본문

javascript/Node.js

Node - Express 미들웨어 connect-flash

사용자 Back 2019. 2. 27. 05:48


connect-flash


[ 상대적으로 중요도가 떨어지는 미들웨어 ]이다.

하지만 일회성 메시지들을 웹 브라우저에 나타낼때 좋다.


직접 설치해주어야 한다.

npm i connect-flash


connect-flash 미들웨어는 cookie-parser와 express-session을 사용하므로 이들보다는 뒤로 위치해야 한다.




app.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var session = require('express-session');
var flash = require('connect-flash');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
...
app.use(cookieParser('secret code'));
app.use(session({
  resave:false,
  saveUninitialized: false,
  secret:'secret code',
  cookie: {
    httpOnly:true,
    securefalse,
  },
}));
app.use(flash());
...
cs


flash 미들웨어는 req 객체에 req.flash 메서드를 추가한다.

req.flash(키,값)으로 해당키에 값을 설정하고,

req.flsh(키)로 해당 키에 대한 값을 불러온다.


flash와 세션을 테스트하기 위해 임시로 라우터를 만들었다.



routes/users.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var express = require('express');
var router = express.Router();
 
/* GET users listing. */
router.get('/'function(req, res, next) {
  res.send('respond with a resource');
});
 
router.get('/flash',function(req,res){
  req.session.message = '세션 메시지';
  req.flash('message''flash 메시지');
  res.redirect('/users/flash/result'); 
});
 
router.get('/flash/result'function(req,res){
  res.send(`${req.session.message} ${req.flash('message')}`);
});
 
module.exports = router;
 
cs


/users/flash 라우터로 GET 요청을 보내면 서버에서는 세션과 flash에 메시지를 설정하고,

/user/flash/result 메시지로 리다이렉트한다.

첫 번째  /user/flash/result에는 세션 메시지와 flash메시지가 모두 보인다.





http://localhost:3000/users/flash/result  방문 화면

세션 메시지 flash 메시지 






여기서 브라우저를 새로고침하면 [세션 메시지]는 보이는데 [flash 메시지]는 보이지 않는다.

flash메시지가 일회용이기 때문이다.


재방문

세션 메시지 




일회성 메시지라는 성질을 이용하여 

로그인 에러나 회원가입 에러 같은 일회성 경고 메시지는 flash 미들웨어로 보내면 좋다.





출처 : node.js 교과서




0 Comments
댓글쓰기 폼