리셋 되지 말자

[NodeJS] Connect-flash 본문

NodeJS/생활코딩

[NodeJS] Connect-flash

kyeongjun-dev 2020. 10. 5. 12:45

1회성 메시지 기능

1회성으로 메시지를 보내는 모듈인 Connect-flash에 대해 알아본다. Passport와는 관계없지만, passport 공식문서에도 나와있다.

 

connect-flash 설치

(github.com/jaredhanson/connect-flash)에서 설치 방법 및 사용방법을 알 수 있다.

npm install --s connect-flash

 

connect-falsh 선언 및 use

const express = require('express')
const app = express()
const port = 80
var compression = require('compression')
var bodyParser = require('body-parser');
var pageRouter = require('./routes/page');
var indexRouter = require('./routes/index');
var authorRouter = require('./routes/author');
var authRouter = require('./routes/auth');
var helmet = require('helmet')
var session = require('express-session');
var FileStore = require('session-file-store')(session);
var flash = require('connect-flash');

app.use(helmet());
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(compression());

app.use(session({
    secret: 'sknfienf123',
    resave: false,
    saveUninitialized: true,
    store:new FileStore()
}))

app.use(flash());
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;

session을 사용하므로 반드시 session use 다음에 use해준다.(미들웨어는 실행 순서가 중요하다)

 

예제 테스트

app.use(flash());
app.get('/flash', function(req, res){
  // Set a flash message by passing the key, followed by the value, to req.flash().
  req.flash('info', 'Flash is back!')
  res.send('flash');
});

app.get('/flash-display', function(req, res){
  // Get an array of flash messages by passing the key to req.flash()
  res.render('index', { messages: req.flash('info') });
});

flash는 request객체에 flash()라는 메서드를 추가해준다. 위처럼 예제 코드를 붙여넣어 준다.

 

접속 및 session 확인

cookie에 "flash"라는 속성이 추가된 것을 확인할 수 있다. 이 상태에서 '/flash'로 접속해본다.

"flash" 속성 안에 "info"라는 이름으로 "Flash is back!"이라는 메시지가 추가된 것을 확인할 수 있다.

 

flash message 사용하기

app.get('/flash-display', function(req, res){
  var fmsg = req.flash();
  console.log(fmsg);
  res.send(fmsg);
});

/flash-display로 접속했을 때, 위처럼 동작하도록 입력해준다. 그리고 웹서버를 재시작한 뒤 /flash에 다시 접속한다.

그러면 session에 있는 "flash"속성에 "info" 메시지가 있는 상태로, /flash-display로 접속한다.

 

  • 결과

"info" flash 메시지가 페이지에 출력되고, 콘솔에서도 출력되는 것을 볼 수 있다. 그런데 session의 "flash"항목에 "info" 메시지가 삭제된 것을 확인할 수 있다.

이처럼 var fmsg=flash(); 와 같이 flash()를 실행하게 되면 메시지가 session에서 삭제되는 것을 알 수 있다.

 

메시지가 삭제된 상태에서 다시 /flash-display로 접속하면 위와같이 빈 fmsg를 확인할 수 있다.

'NodeJS > 생활코딩' 카테고리의 다른 글

[NodeJS] Passport 로그아웃  (0) 2020.10.05
[NodeJS] Passport 로그인 확인  (0) 2020.10.05
[NodeJS] Passport 세션이용  (0) 2020.09.28
[NodeJS] Passport 인증 구현 및 자격 확인  (0) 2020.09.28
[NodeJS] Passport 설치  (0) 2020.09.28
Comments