Tolles Community-Modul

fib-session

Session-Middleware für fibjs

Installieren

1
npm install fib-session [--save]

Prüfen

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

Erstellen einer API-Sitzungs-Middleware

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

Sowohl kv-Optionen als auch Session-Optionen befinden sich im selben Objekt.

kv-store optionen

Optionen Ursprünglich Objekt/Karte LruCache LevelDB Redis MongoDB SQLite/MySQL
Tabellenname "kvs" x x x
Schlüsselname "k" x x x x
value_name "v" x x x x
key_size 32 x x x x x
value_size 256 x x x x x
cleanup_interval(ms) 60000 x x x x x
Zeitüberschreitung (ms) 0 x x
Präfix ""
Zwischenspeicher falsch
Cache_Größe 65536
Cache_timeout (ms) 60000

Sitzungsoptionen

Optionen Ursprünglich
session_cache_size 65536 maximale Anzahl von Sitzungen im Cache
session_cache_timeout(ms) 900000 Sitzungsobjekte, die eine Zeit lang nicht bedient werden, aus Puffer löschen, Standard 15 Minuten
session_cache_delay 100 Zeitverzögerung für Schreibsitzung in den persistenten Speicher
session_id_name "Session-ID"
  • Der Sitzungscache wird verwendet, um die Sitzungskonsistenz zwischen http-Anforderungen aufrechtzuerhalten.
  • das Timeout des Sitzungscaches muss größer sein als seine Verzögerung

  • Die Client-Seite hat nur die Session-ID, die Session wird serverseitig betrieben.

Methoden

session.setup()

die Backend-Datenbank einrichten.

v = session.cookie_filter

gibt einen Cookie-basierten Sitzungsfilter zurück.

session.api_filter

gibt einen Header-basierten Sitzungsfilter zurück.

session.api_token

gibt einen API-Handler zurück, der eine neue Sitzungs-ID erhält.

JSON-Webtoken (JWT)

Optionen

Optionen Ursprünglich
session_jwt_algo Null siehe jws.ALGORITHMEN in fib-jws
session_jwt_key Null Zeichenschlüssel siehe in fib-jws
  • siehe fib-jws https://github.com/fibjs/fib-jws
  • setze session_jwt_algo und session_jwt_key, um JWT zu aktivieren
    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

  • setze das JSON Web Token im Cookie
  • sign_key für die Signatur, kann sich je nach Algorithmus von session_jwt_key unterscheiden.
  • Gemäß der JSON Web Token-Spezifikation kann eine Benutzersitzung nur einmal setTokenCookie aufgerufen werden, um die Benutzersitzungsinformationen festzulegen. Die zweite löst eine Ausnahme aus: new Error('Can't modify the JSON Web Token')
  • Standardwert 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

  • Token für API-Filtermodus abrufen, siehe session.api_filter
    1
    session.getToken ({ id: 12345, name: "Frank" }, sign_key)