Geweldige gemeenschapsmodule

fib-sessie

Sessie-middleware voor fibjs

Installeren

1
npm install fib-session [--save]

Test

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; }, ... } ]);

Een API-sessie-middleware maken

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 } ]);

Zowel kv-opties als sessie-opties bevinden zich in hetzelfde object.

kv-store-opties

opties standaard object/kaart LruCache NiveauDB Opnieuw MongoDB SQLite/MySQL
tafel naam "kvs" X X X
sleutelnaam "k" X X X X
waarde_naam "v" X X X X
sleutel_grootte 32 X X X X X
waarde_grootte 256 X X X X X
opschoningsinterval(ms) 60000 X X X X X
time-out (ms) 0 X X
voorvoegsel ""
cache vals
cache grootte 65536
cache_timeout(ms) 60000

sessie opties

opties standaard
sessie_cache_grootte 65536 maximaal aantal sessies in cache
session_cache_timeout(ms) 900000 sessieobjecten wissen die gedurende een bepaalde periode niet vanuit de buffer worden gebruikt, standaard 15 minuten
session_cache_delay 100 tijdsvertraging voor schrijfsessie naar permanente opslag
sessie_id_naam "sessieID"
  • sessiecache wordt gebruikt om sessieconsistentie tussen http-vereisten te behouden.
  • de time-out van de sessiecache moet groter zijn dan de vertraging

  • De clientzijde heeft alleen het sessie-ID, de sessie wordt aan de serverzijde uitgevoerd.

Methoden

session.setup()

stel de backend-database in.

v = session.cookie_filter

retourneert een op cookies gebaseerd sessiefilter.

session.api_filter

retourneert een op headers gebaseerd sessiefilter.

session.api_token

retourneert een API-handler die een nieuwe sessie-ID krijgt.

JSON-webtoken (JWT)

opties

opties standaard
session_jwt_algo nul zie jws.ALGORITMEN in fib-jws
session_jwt_key nul tekensleutel, zie in fib-jws
  • zie fib-jws https://github.com/fibjs/fib-jws
  • stel session_jwt_algo en session_jwt_key in om JWT in te schakelen
    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 })

    Methoden

    session.setTokenCookie

  • stel het JSON Web Token in cookie in
  • sign_key voor handtekening, kan verschillen van session_jwt_key, afhankelijk van het algoritme.
  • Volgens de JSON Web Token-specificatie kan één gebruikerssessie slechts één keer setTokenCookie worden genoemd voor ingestelde gebruikerssessie-informatie. De tweede genereert een uitzondering: new Error('Can't wijzigingen the JSON Web Token')
  • standaardwaarde 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

  • krijg een token voor de API-filtermodus, zie session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)