2013-07-31 2 views
3

완전한 클라이언트 관리 세션을 지원하기위한 프레임 워크가 있습니까? 즉, 서명 된 pid를 쿠키에 저장하는 대신 (Express처럼) 모든 컨텍스트를 저장하여 유지할 필요없이 클러스터 전체의 상태를 관리 할 수 ​​있습니다.NodeJS - 무국적 세션을위한 프레임 워크?

+2

세션은 서버에 대한 의미 이용자의 개인 정보가 포함되어 있습니다. 전체 세션을 사용자에게 다시 보내는 것은 좋지 않습니다. 그것은 클라이언트에 의해 조작 될 수 있습니다. 완전한 클라이언트 관리 세션은 좋지 않습니다. – user568109

+1

@ user568109 이것은 일반적인 패턴이며 안전하게 수행 할 수 있습니다. http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf –

+1

안전한 쿠키 프로토콜은 제 3 자의 브라우저와 서버 간의 연결을 보호하는 것에 관한 것입니다. 사용자가 수정할 수 없도록 브라우저에서만 관리되는 HTTP 전용 쿠키입니다. – user568109

답변

1

이 지원 명시 미들웨어가 :

https://github.com/expressjs/cookie-session

cookieSession()

은 쿠키 기반 세션을 제공하고 req.session를 채 웁니다가. 이 미들웨어는 다음 옵션을 취합니다 - 쿠키 이름은 "세션"

  • 키에 디폴트 -

    • 이름을 하나 경우 키 사용 - 비밀 키의 목록 변조 방지하기 위해
    • 비밀
    • 옵션을 지정하지 - 등, MAXAGE, Http 만, 보안 등의 추가 옵션을

    미들웨어 :

    var cookieSession = require('cookie-session') 
    ... 
    app.use(cookieSession({ 
        name: "my_session_cookie", 
        secret: "dont_tell_anybody_the_secret_and_change_it_often", 
        options: { ... } 
    )); 
    
    app.use((req, res, next) => { 
        // set options on req.session before your response goes out 
        req.session.viewCount = (req.session.viewCount || 0) + 1; 
        res.end(`You viewed the page ${req.session.viewCount} times.`); 
    }); 
    

    쿠키는 단순히 응답하기 전에 null로 세션을 할당 취소하려면 :

    req.session = null