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
- gcc 업데이트
- telegraf
- gcc regex
- c3 축 가리기
- linux시간으로 변경
- regex_search
- 정규식 활용
- c++ 정규식
- 백준
- grafana dashboard
- CentOS7
- c3 축 없애기
- snmp
- snmp test
- python popen
- c3 second
- influxdb 설치
- g++ 업데이트
- semanage
- 1697
- selinux port 등록
- python os
- centos pyhon 설치
- c3 step graph
- subporcess path
- c3 초
- InfluxDB
- python subprocess
- 정규식 컴파일
- 정규식 문자열 출력
Archives
- Today
- Total
리셋 되지 말자
[express] session 본문
미들웨어 session
(expressjs.com/en/resources/middleware/session.html) nodejs의 공식 홈페이지에서 설명을 확인할 수 있다.
(github.com/expressjs/session) github에서도 확인 가능하다.
설치
npm을 이용해 설치한다.
npm install -s express-session
- express-session.js
var express = require('express')
var parseurl = require('parseurl')
var session = require('express-session')
var app = express()
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}))
app.use(function (req, res, next) {
if (!req.session.views) {
req.session.views = {}
}
// get the url pathname
var pathname = parseurl(req).pathname
// count the views
req.session.views[pathname] = (req.session.views[pathname] || 0) + 1
next()
})
app.get('/foo', function (req, res, next) {
res.send('you viewed this page ' + req.session.views['/foo'] + ' times')
})
app.get('/bar', function (req, res, next) {
res.send('you viewed this page ' + req.session.views['/bar'] + ' times')
})
app.listen(3000, function(){
console.log('nodejs server is listening on port 3000....');
})
github 페이지의 맨 아래에 있는 예제에, app.listen을 추가한 것이다.
페이지 접속
아래는 localhost:3000/foo 페이지로 접속한 화면이다.
접속한 상태에서, 새로고치믈 하면 숫자가 1씩 증가하는것을 확인할 수 있다.
쿠키를 확인해보면, connect.sid라는 쿠키를 확인할 수 있다. 웹브라우저에서 저 쿠키를 전송하면, 쿠키의 값을 이용해 웹서버는 사용자를 식별하고, 데이터를 조작함으로써 숫자를 1씩 증가시킨다.
코드 분석
먼저 app.use(session{});부분을 보면 'secret'이라는 값을 확인할 수 있다.
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}))
secret에 대한 설명은 아래와 같다.
노출되면 안되는 값.
resave가 false이면, 세션데이터가 바뀌기 전까지는 세션 저장소의 값을 저장하지 않는다. true면 값이 바뀌던 안바뀌던 계속 값을 저장한다.
saveUninitialized이 true이면 세션이 필요하기 전까지는 세션을 구동시키지 않는다. (기본적으로 true로 하면 좋다.)
'NodeJS > 생활코딩' 카테고리의 다른 글
[express] session 객체 (0) | 2020.09.27 |
---|---|
[express] session 옵션 (0) | 2020.09.27 |
[NodeJS] 쿠키를 이용한 기능 구현 (0) | 2020.09.25 |
[NodeJS] Path 와 Domain (0) | 2020.09.25 |
[NodeJS] Secure 와 HttpOnly (0) | 2020.09.25 |
Comments