멋진 커뮤니티 모듈

fib 세션

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 옵션과 sesion 옵션은 모두 동일한 객체에 있습니다.

kv-store 옵션

옵션 기본 개체 /지도 LruCache LevelDB Redis MongoDB SQLite / MySQL
table_name "kvs" 엑스 엑스 엑스
key_name "케이" 엑스 엑스 엑스 엑스
값 _ 이름 "V" 엑스 엑스 엑스 엑스
key_size 32 엑스 엑스 엑스 엑스 엑스
값 _ 크기 256 엑스 엑스 엑스 엑스 엑스
cleanup_interval (ms) 60000 엑스 엑스 엑스 엑스 엑스
시간 초과 (ms) 0 엑스 엑스
접두사 ""
은닉처 그릇된
cache_size 65536
cache_timeout (ms) 60000

세션 옵션

옵션 기본
session_cache_size 65536 캐시의 최대 세션 수
session_cache_timeout (ms) 900000 버퍼에서 일정 시간 동안 작동하지 않는 세션 개체 지우기 (기본값 15 분)
session_cache_delay 100 영구 스토리지에 대한 쓰기 세션의 시간 지연
session_id_name "sessionID"
  • 세션 캐시는 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 참조
  • JWT를 사용하도록 session_jwt_algo 및 session_jwt_key 설정
    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 for signature 는 알고리즘에 따라 session_jwt_key와 다를 수 있습니다.
  • according to JSON Web Token specification 한 사용자 세션은 설정된 사용자 세션 정보에 대해 setTokenCookie를 한 번만 호출 할 수 있습니다. 두 번째 세션에서는 예외가 발생합니다. new Error ( 'Ca n'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

  • get token for api filter mode , session.api_filter 참조
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)