Fib-Sitzung
Session Middleware für Fibjs
Installieren
1npm install fib-session [--save]
Prüfung
1npm run ci
Erstellen einer Cookie-basierten Sitzungs-Middleware
1
2
3
4
5
6
7
8
9
10
11
12
13var 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
13var 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 | "" | √ | √ | √ | √ | √ | √ |
Zwischenspeicher | 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 | "Session-ID" |
- 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 aktivieren1 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_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)