Fantastisches Community-Modul

Fib-Sitzung

Session Middleware für Fibjs

Installieren

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

Erstellen einer API-Session-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 sesion-Optionen befinden sich im selben Objekt.

kv-store Optionen

Optionen Standard Objekt / Karte LruCache LevelDB Redis MongoDB SQLite / MySQL
Tabellenname "kvs" x x x
Schlüsselname "k" x x x x
Wertname "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 ""
Cache falsch
cache_size 65536
cache_timeout (ms) 60000

Sitzungsoptionen

Optionen Standard
session_cache_size 65536 maximale Anzahl von Sitzungen im Cache
session_cache_timeout (ms) 900000 Löschen von Sitzungsobjekten, die für einen bestimmten Zeitraum nicht aus dem Puffer ausgeführt werden, standardmäßig 15 Minuten
session_cache_delay 100 Zeitverzögerung für die Schreibsitzung in den dauerhaften Speicher
Sitzungs-ID-Name "sessionID"
  • Der Sitzungscache wird verwendet, um die Sitzungskonsistenz zwischen http zu gewährleisten.
  • Das Timeout des Sitzungscaches muss größer sein als seine Verzögerung

  • Die Clientseite hat nur die Sitzungs-ID. Die Sitzung wird auf der Serverseite ausgeführt.

Methoden

session.setup()

Richten Sie die Backend-Datenbank ein.

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 Web Token (JWT)

Optionen

Optionen Standard
session_jwt_algo null siehe jws.ALGORITHMS in fib-jws
session_jwt_key null Zeichenschlüssel. siehe in fib-jws
  • Siehe fib-jws https://github.com/fibjs/fib-jws
  • Setzen Sie 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

  • Setzen Sie das JSON-Web-Token in ein Cookie
  • sign_key for signature kann sich je nach Algorithmus von session_jwt_key unterscheiden.
  • according to JSON Web Token specification kann eine Benutzersitzung nur einmal als setTokenCookie für festgelegte Benutzersitzungsinformationen aufgerufen werden. Die zweite löst eine Ausnahme aus: neuer Fehler ('JSON-Web-Token kann nicht geändert werden')
  • 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

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