Tolles Community-Modul

Fib-Sitzung

Sitzungs-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 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
Schlüsselgröße 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
Cachegröße 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 Sie Sitzungsobjekte, die für einen bestimmten Zeitraum nicht bearbeitet wurden, aus dem Puffer, standardmäßig 15 Minuten
session_cache_delay 100 Zeitverzögerung für die Schreibsitzung in den persistenten Speicher
Sitzungs-ID-Name "Session-ID"
  • Der Sitzungscache wird verwendet, um die Sitzungskonsistenz zwischen den HTTP-Anforderungen aufrechtzuerhalten.
  • Das Timeout des Sitzungscache muss größer sein als seine Verzögerung

  • Auf der Client-Seite gibt es nur die Sitzungs-ID. Die Sitzung wird auf der Server-Seite betrieben.

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
  • Legen Sie session_jwt_algo und session_jwt_key fest, 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

  • Legen Sie das JSON-Web-Token im Cookie fest
  • 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 Benutzersitzungsinformationen festzulegen. Die zweite Sitzung löst eine Ausnahme aus: new Error('Das 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

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