레이블이 Session인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Session인 게시물을 표시합니다. 모든 게시물 표시

2016년 1월 25일 월요일

[nodejs - redis] rediss - session 레디스 세션 이용하기

redis를 session서버로 사용하는 방법


session의 값을 server와 분리 시킴으로서 안정적으로 저장하고 여러개의 서버의 세션을 하나의 redis서버로 통합하여 사용 할 수 있습니다. session의 특성상 입출력이 빈번하기 때문에 redis의 성격과도 잘 맞다고 생각됩니다.

우선 환경은
입니다.

레디스 설치 방법은 생략합니다.


//redis session require
var session = require('express-session');
var redis = require('redis');
var redisStore = require('connect-redis')(session);
var client = redis.createClient();

app.use(session(
    {
        secret: 'secret_key',
        store: new redisStore({
            host: "127.0.0.1",
            port: 6379,
            client: client,
            prefix : "session:",
            db : 0
        }),
        saveUninitialized: false, // don't create session until something stored,
        resave: true // don't save session if unmodified
    }
));

//....아래쪽...

//redis session input output
var router = express.Router();
router.get('/session/set/:value', function(req, res) {
    req.session.redSession = req.params.value;
    res.send('session written in Redis successfully');
});

app.get('/session/get/', function(req, res) {
    if(req.session.redSession)
        res.send('the session value stored in Redis is: ' + req.session.redSess);
    else
        res.send("no session value stored in Redis ");
});


를 app.js에 작성하면 설정이 끝나게 됩니다.

new redisStore 부분에 자신의  reids설정을 작성하고 db의 파라미터를 통하여 session store로 사용할 db index를 설정합니다.

prefix를 통하여 키값의 앞에 붙일 값들을 정합니다. redis는 : <- 를 통하여 키값들을 grouping하게 됩니다. 즉, 위와 같이 해놓게 된다면 session에 해당하는 key값들은
아래 결과의 사진을 보게 됬을때 정리가 깔금하게 됩니다.

session의 상용방법은
http://mythinkg.blogspot.kr/2015_01_01_archive.html
를 참고해주시면 됩니다.
단순히 redis에 값을 저장하는 것이기 때문에 사용방법은 express-session과 같고 결과는 아래와 같이 나오는 걸 확인하여 session값이 저장됨을 볼 수있습니다.




2015년 1월 14일 수요일

[node express] express-session 간단 사용 예제


  • session은 서버가 클라이언트를 식별하기 위하여 사용한다. 대표적인 사용예로는 로그인 관리가 있다.
  • express 3.x 버전에서는 express의 Middleware 즉, express-session, cookie-session, body-parser, cookie-parser 외의 여러 내장했던 모듈들이 포함되어 있었다고 한다.
  • 하지만 express 4.x 버전 부터는 이러한 미들웨어들이 분리가 되면서, express-session등을 따로 사용하기 위해선 별도의 설치가 필요하다.

  • 진행중인 express 폴더내에 express-session을 따로 설치해준다.


1
npm install express-session

  • 그리고 express에 연결시켜줍니다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
var express = require('express');
var session = require('express-session');
...
var app = express();
...
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true
}));

  • 여기서 secret은 쿠키의 값의 변조를 방지하기 위한 값입니다. 그리고 세션의 기본 난수 발생 등을 위하여 사용되는 것입니다.??(확인 안해봤습니다.) 값은 원하시는 대로 넣으시면됩니다.
  • resave는 세션의 값이 변경이 될경우 자동 저장의 여부인데 기본적으로 default값은 true값 이지만 express-session 메뉴얼에서도 추천하지 않습니다.
  • saveUninitalized는 반대로 default값이 false지만 역시 express-session에서 추천하지 않습니다. 때문에 true로 설정합시다.
  • 연결이 되었으니 사용해 봅시다.


1
2
3
//req.session.[세션의 변수명] = [넣을 값];

req.session.logined = 'logined';

  • 이제 express내에서 받아오는 request(req)의 세션 값을 가져오고 수정하기 위하여 위와 같이 접근하면 됩니다.

2014년 7월 15일 화요일

[Network] 02.네트워크 모델

OSI 7계층
  • ISO(국제 표준기구)에서 만듬
  • Open System Interconnection
  • Open System이란, 두 개의 서로 다른 시스템에 관계없이 기본 아키텍처의 통신 할 수 있도록 하는 프로토콜
  • OSI 모델은 프로토콜이 아니다. 유연하고 강력하게 상호 관계적으로 운용 할 수 있는 네트워크 아키텍처를 이해하고 설계를 위한 모델이다.
  • Layered된 아키텍처
  • 각각의 Layer는 같은 Layer에 대하여 Peer to Peer 통신을 한다.
  • 각각의 인터페이스는 Layer가 제공해야하는 정보와 서비스를 정의해야 한다. 

Layer 사이의 인터페이스

  • Layer와 Interface는 네트워크에 모듈을 제공한다.
  • Physical Layer(물리 계층)과 Data Link(데이터 링크 계층)은 H/W로서 네트워크를 지원하는 계층이다.
  • Application Layer(어플리케이션 계층)과 Presentation Layer(프리젠테이션 계층)은 S/W로서 사용자를 지원하는 계층이다.
  • Transport Layer는 두 개의 하위 그룹과 인터페이스를 제공하는데 있어 링크의 역활을 한다.

캡슐화
  • 각 계층은 자신의 사용을 위한 헤더 또는 트레일러를 가질 수 있다.
  • 각 레벨 N-1은 캡슐화 된 데이터의 일부 데이터나 헤더/트레일러가 되는 데이터를 인식할 수 없다.
    • ->각 층에 맞는 헤더와 트레일러 또는 데이터만을 읽을 수 있다.

Physical Layer
  • 물리적인 전송매체(송수신기)를 통해 비트 스트림을 전송하기 위한 필요한 기능을 조정한다.
  • 인터페이스와 전송매체의 기계적이고 전기적인 규격을 다룬다
  • Physical Layer는 하나의 노드에서 각각의 비트를 송신하기 위한 역활을 맏는다.
    • Interface와 Media의 물리적 특성
    • Bits의 표현식(인코딩)
    • Data 처리 속도, 전송 속도
    • 라인 구성
    • 물리적 토플로지
    • 전송 모드

Data Link Layer
  • Physical Layer을 변환하고 노드 간(Node to Node)의 전달을 가능하게 한다.
  • Physical Layer을 상위 Layer(Network Layer)에게 에러로부터 자유롭게 만든다.(???)
  • Data Link Layer는 하나의 노드로부터 다음 프레임을 송신하기 위한 역활을 맏는다.
    • Framing : 프레임을 씌우는 일
    • Physical addressing : sender(송신자 주소), receiver(수신자 주소)
      • Mac Address
    • Flow control(흐름 제어)
    • Error control(오류 제어)
    • Access control(엑세스 제어)

Network Layer
  • Packet(데이터)를 소스의 목적지로 여러 네트워크 링크를 통하여 전달하는 가능하게 하는 역활을 한다.(End to End)
  • Network Layer는 최종의 목적지에 원래의 소스로부터 패킷들을 전달하는 역활을 한다.
    • Logical Addressing
      • packet이 네트워크 경계를 지날 때, 다른 Addressing System과 구별할 필요가 있다.
      • IP Address
    • Routing
      • Internetwork에 있는 최종 목적지로의 경로 탐색

Transport Layer
  • 전체 메세지를 프로세스 간(Process to Process)의 전달을 가능하게 합니다.
  • 한 프로세스에서 다른 프로세스로 메세지를 전달하는 역활을 한다.
    • Service-Point Addressing
      • Port Addressing
    • Segmentation and Reassembly(분할 및 재조립)
    • Connection control(연결 제어)
    • Flow control(흐름 제어)
    • Error control(오류 제어)

Session Layer
  • Dialogue controller
    • 통신 시스템 사이의 동기화, 유지를 한다.
    • Dialog Control
    • Synchronization

Presentation Layer
  • 두 시스템 사이에 교환되는 정보의 Syntax(구문)과 Semantics(의미)에 관한 역활을 한다.
    • Translation(번역)
    • Encryption(암호화)
    • Compression(압축)

Application Layer
  • Application Layer는 네트워크에 접근하는 사용자(사람 또는 소프트웨어)를 정의하게 한다.
  • 사용자 인터페이스 및 서비스에 대한 지원을 제공합니다.
  • 예) 전자메일, 원격 파일 접근 및 전송, WWW 등
  • 사용자에게 서비스를 제공하는 계층
    • 이메일 서비스
    • 파일 전송, 접근
    • 원격 로그인
    • 인터넷
    • 게임

TCP/IP 와 OSI 계층 비교
  • 두개의 모델은 위와 같이 비교 할 수 있다. OSI의 몇개의 개층을 4개로 나눠 묶여 사용된다.
  • 역활에 있어서는 TCP/IP의 계층은 OSI 모델에서의 각각의 계층을 합쳐놓은 것과 대동소이하다.
  • 대부분의 교육과정에서는 OSI계층을 이용한 교육을 하지만 실제로는 TCP/IP계층에 대한 이론을 사용한다고 한다.(현직에 계시는 선배님의 말씀)