멋진 커뮤니티 모듈

파이브 세션

fibjs용 세션 미들웨어

설치

1
npm install fib-session [--save]

시험

1
npm run ci
1 2 3 4 5 6 7 8 9 10 11 12 13
var Session = require('fib-session') var session = new Session(conn, opts); var srv = new http.Server(8000, [ session.cookie_filter, // use session ID via cookie { // routers '^/foo$': (r) => { var v = r.session.v; }, ... } ]);

API 세션 미들웨어 생성

1 2 3 4 5 6 7 8 9 10 11 12 13
var Session = require('fib-session') var session = new Session(conn, opts); var srv = new http.Server(8000, [ session.api_filter, // use api session filter { // routers '^/foo$': (r) => { var v = r.session.v; }, '^/get-token$': session.api_token } ]);

kv 옵션과 세션 옵션은 모두 동일한 개체에 있습니다.

kv-store 옵션

옵션 기본 개체/지도 루루캐시 레벨DB 레디스 몽고DB SQLite/MySQL
table_name "kvs" NS NS NS
key_name "케이" NS NS NS NS
값_이름 "V" NS NS NS NS
key_size 32 NS NS NS NS NS
값_크기 256 NS NS NS NS NS
cleanup_interval(ms) 60000 NS NS NS NS NS
시간 초과(ms) 0 NS NS
접두사 ""
은닉처 거짓
캐시 크기 65536
캐시_시간 초과(ms) 60000

세션 옵션

옵션 기본
세션_캐시_크기 65536 캐시의 최대 세션 수
session_cache_timeout(ms) 900000 버퍼에서 일정 시간 동안 작동하지 않는 세션 개체 지우기, 기본 15분
session_cache_delay 100 영구 저장소에 대한 쓰기 세션의 시간 지연
session_id_name "세션아이디"
  • 세션 캐시는 http 요구 간의 세션 일관성을 유지하는 데 사용됩니다.
  • 세션 캐시의 시간 초과는 지연 시간보다 커야 합니다.

  • 클라이언트 측에는 세션 ID만 있고 세션은 서버 측에서 운영됩니다.

행동 양식

session.setup()

백엔드 데이터베이스를 설정합니다.

v = session.cookie_filter

쿠키 기반 세션 필터를 반환합니다.

session.api_filter

헤더 기반 세션 필터를 반환합니다.

session.api_token

새 세션 ID를 가져오는 API 핸들러를 반환합니다.

JSON 웹 토큰(JWT)

옵션

옵션 기본
session_jwt_algo 없는 fib-jws의 jws.ALGORITHMS 참조
session_jwt_key 없는 기호 키. fib-jws 참조
  • fib-jws 참조 https://github.com/fibjs/fib-jws
  • session_jwt_algo 및 session_jwt_key를 설정하여 JWT를 활성화합니다.
    1 2 3
    // session_jwt_algo is encryption algorithms in fib-jws // session_jwt_key is to verify the signature. var session = new Session(conn, { session_jwt_algo: 'HS256', session_jwt_key: verify_key })

    행동 양식

    session.setTokenCookie

  • 쿠키에 JSON 웹 토큰 설정
  • 서명을 위한 sign_key는 알고리즘에 따라 session_jwt_key와 다를 수 있습니다.
  • JSON 웹 토큰 사양에 따르면 사용자 세션 정보 설정에 대해 한 사용자 세션은 setTokenCookie를 한 번만 호출할 수 있으며 두 번째 세션에서는 new Error('Can't modify the JSON Web Token') 예외가 발생합니다.
  • 기본값 r.session={}
    1 2 3
    // sign user info: { id: 12345, name: "Frank" }, and set the cookie // r is request session.setTokenCookie(r, { id: 12345, name: "Frank" }, sign_key)

    session.getToken

  • API 필터 모드에 대한 토큰 가져오기, session.api_filter 참조
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)