멋진 커뮤니티 모듈

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

kv-스토어 옵션

옵션 기본 객체/지도 루캐시 레벨DB 레디스 몽고DB SQLite/MySQL
테이블_이름 "kvs" 엑스 엑스 엑스
키_이름 "케이" 엑스 엑스 엑스 엑스
값_이름 "V" 엑스 엑스 엑스 엑스
키_크기 32 엑스 엑스 엑스 엑스 엑스
value_size 256 엑스 엑스 엑스 엑스 엑스
정리_간격(ms) 60000 엑스 엑스 엑스 엑스 엑스
시간 초과(ms) 0 엑스 엑스
접두사 ""
은닉처 거짓
캐시_크기 65536
캐시 시간 초과(ms) 60000

세션 옵션

옵션 기본
세션_캐시_크기 65536 캐시의 최대 세션 수
session_cache_timeout(ms) 900000 버퍼에서 일정 시간 동안 동작하지 않는 세션 객체를 지웁니다. 기본값은 15분입니다.
session_cache_delay 100 영구 저장소에 대한 쓰기 세션에 대한 시간 지연
세션_ID_이름 "세션ID"
  • 세션 캐시는 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는 알고리즘에 따라 session_jwt_key와 다를 수 있습니다.
  • JSON 웹 토큰 사양에 따르면 하나의 사용자 세션은 설정된 사용자 세션 정보에 대해 한 번만 setTokenCookie를 호출할 수 있습니다. 두 번째 세션에서는 다음과 같은 예외가 발생합니다: new Error('Can't edit 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)